0

我想了解性病是如何工作的,我有我的內容模型建立與郵政和第二十從它繼承通用模型路徑。軌道/ STI -

我也有一個評價模型。在評論控制器,我有這樣的:

def find_content 
    @content = Content.find(params[:content_id]) 
end 

顯然,它不工作,因爲PARAMS或者顯示POST_ID或article_id的。我如何告訴評論控制器根據參數提取相關的content_id?

回答

1

速戰速決可能是:

@content = Content.find(params[:post_id] || params[:article_id]) 

在你的參數應該是一個article_idpost_id。因此,您可以嘗試捕獲這兩個參數,並將它們與邏輯或運算符(||)結合使用。因此,您可以使用Content.find的article_id或post_id。

params 
# => {:article_id=>1, :other_parameter=>"value"} 

params[:post_id] || params[:article_id] 
# => 1 

如果沒有的參數你nilContent.find失敗並ActiveRecord::RecordNotFound例外。沒關係,我想。稍後,您將在控制器中解決此錯誤,以顯示404頁面。

1

當您使用單表繼承你得到一個和唯一一個在這列「類型」表。所以,你的情況,你有表「內容」與「TYPE」列在其中存儲的字符串之一:「後」或「物品」。

當你在你的Rails應用程序中使用STI你必須定義三種模式:內容(從ActiveRecord::Base繼承作爲一個普通模式),郵政和文章(無論是從Content繼承),並對其直接操作,如:Post.findArticle.last

因爲這兩個帖子和文章是他們每個人的同桌「內容」的行始終具有鮮明的ID。我不知道你的應用程序的邏輯和你試圖達到什麼目標(例如,我不明白Post和Article之間的邏輯差異應該是什麼),但是我建議從你的例子中實現這個動作:

def find_content 
    @content = Post.find_by_id(params[:content_id]) || Article.find_by_id(params[:content_id] 
end 

我用.find_by_id.find因爲第二會提高你需要處理/搶險第一返回nil異常。

當然,我的例子並不優雅,但我希望你明白了吧。