class User < ActiveRecord::Base
has_many :vehicles
end
class Vehicle < ActiveRecord::Base
belongs_to :user
belongs_to :make
end
class Make < ActiveRecord::Base
has_many :vehicles
end
所以在MakesController#show
中,我想要显示该特定品牌的所有current_user
车辆。有没有办法在协会上这样做:
current_user.vehicles.find_by_make(@make)
或者我被迫做了类似的事情:
Vehicle.find_by_user_and_make(current_user, @make)
?我知道第一种方法不起作用,但第二种方法感觉有点脏。
编辑:
道歉,我意识到我过分简化了这个问题。我真的很想将Make上定义的类方法/范围应用于关联。调用ActiveRecord::Relation
方法(如where
)非常简单。动态地举起了这个例子,但是还有很多比我想做的简单的where
电话更多的事情,再次道歉。
答案 0 :(得分:1)
您也可以
current_user.vehicles.find_all_by_make(@make)
答案 1 :(得分:0)
你想要
current_user.vehicles.where(make_id: @make)
正如@Zippie所指出的