1
如何以最符合MVC模式的方式進行交叉模型查找?從另一個模型的視圖或控制器訪問模型
我有一個模型,Istc.rb.在對應於這種模式索引視圖,我想這樣做:
= "Last edited by #{User.find_by_id(istc.user_id).first_name}"
顯然,你不能有一個model.find的觀點 - 這不僅是一個model.find,這是一個發現在不同的模型上。但是,你會如何重構這個?
我擔心有這樣的,因爲它仍然是相當接近View層幫手:
module UsernameHelper
def user_name(model)
User.find_by_id(model.user_id) unless User.find_by_id(model.user_id).nil?
end
end
是這樣做會對用戶範圍的方式嗎?
# User.rb
scope :lookup, lambda {|model| where("id = ?", model.user_id)}
# username_helper.rb
module UsernameHelper
def user_name(model)
User.lookup(model).first unless User.lookup(model).first.nil?
end
end
還是應該istcs_controller處理它?還是應該有一個單獨的控制器,與Istc和用戶模型進行對話?
想法很受歡迎,我真的很希望看到任何可以優雅地解決這類問題的示例應用程序。
在模型和控制器或視圖之間沒有強制1對1的關係。所以不要太擔心這個部分。使用您需要的模型來構建視圖。您的模型之間是否建立了關聯? http://guides.rubyonrails.org/association_basics.html 然後你可以用它通過Istc模型找到用戶。 – Rasmus
對我來說範圍是最好的解決方案 –