我想了解性病是如何工作的,我有我的內容模型建立與郵政和第二十從它繼承通用模型路徑。軌道/ STI -
我也有一個評價模型。在評論控制器,我有這樣的:
def find_content
@content = Content.find(params[:content_id])
end
顯然,它不工作,因爲PARAMS或者顯示POST_ID或article_id的。我如何告訴評論控制器根據參數提取相關的content_id?
我想了解性病是如何工作的,我有我的內容模型建立與郵政和第二十從它繼承通用模型路徑。軌道/ STI -
我也有一個評價模型。在評論控制器,我有這樣的:
def find_content
@content = Content.find(params[:content_id])
end
顯然,它不工作,因爲PARAMS或者顯示POST_ID或article_id的。我如何告訴評論控制器根據參數提取相關的content_id?
速戰速決可能是:
@content = Content.find(params[:post_id] || params[:article_id])
在你的參數應該是一個article_id
或post_id
。因此,您可以嘗試捕獲這兩個參數,並將它們與邏輯或運算符(||
)結合使用。因此,您可以使用Content.find
的article_id或post_id。
params
# => {:article_id=>1, :other_parameter=>"value"}
params[:post_id] || params[:article_id]
# => 1
如果沒有的參數你nil
和Content.find
失敗並ActiveRecord::RecordNotFound
例外。沒關係,我想。稍後,您將在控制器中解決此錯誤,以顯示404頁面。
當您使用單表繼承你得到一個和唯一一個在這列「類型」表。所以,你的情況,你有表「內容」與「TYPE」列在其中存儲的字符串之一:「後」或「物品」。
當你在你的Rails應用程序中使用STI你必須定義三種模式:內容(從ActiveRecord::Base
繼承作爲一個普通模式),郵政和文章(無論是從Content
繼承),並對其直接操作,如:Post.find
,Article.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
異常。
當然,我的例子並不優雅,但我希望你明白了吧。