我有club
和course
模型,其中一个课程属于一个俱乐部,而一个俱乐部有许多课程。
当我加载一个俱乐部时,我也想加载它的相关课程,但我只想加载那些符合条件测试(approved? == true
)的课程。
如果我直接与课程合作,那么如何做到这一点很简单:
@courses = Course.find( :all, :conditions => {:approved => true } )
但我想作为声明的一部分:
@club = Club.find(params[:id])
因为我的观点是这样建立的,我宁愿不必改变所有的观点。
谢谢!
最佳答案
如果你只考虑一个俱乐部的课程,如果它已经被批准,你可以
class Club < ActiveRecord::Base
has_many :courses, :conditions => {:approved => true}
end
在你的控制器里
@club = Club.find(params[:id], :include => :courses)
现在,我不知道我是否误解了你,但你说“你的观点是这样建立的”。你是说你的管制员吗?因为如果你的观点中有这样的逻辑…DHH每次有人这样做都会杀死一只小猫。
关于ruby-on-rails - Rails:有条件地加载关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3432678/