0
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我想做的一个简单的电话之外,还有很多事情要做,再次道歉。

4

2 回答 2

1

You can also do

current_user.vehicles.find_all_by_make(@make)
于 2014-01-04T15:08:28.670 回答
0

你要

current_user.vehicles.where(make_id: @make) 

正如@Zippie 所说

于 2013-04-11T23:31:06.290 回答