has_many多个外键搜索

时间:2012-07-09 13:29:22

标签: ruby-on-rails-3

User
 #

Cars
 belongs_to :father, :class_name => "User"
 belongs_to :user

user = User.find(1)

伙计帮助我可以通过键入user.cars(使用user_id搜索汽车)来获取用户的汽车,但我怎样才能使用father_id进行搜索?

显然我可以做Car.find_by_creator_id(...),但我想知道是否有一个有道理的解决方案。

由于

1 个答案:

答案 0 :(得分:1)

您可以设置关系的另一面,并为:inverse_of模型中的每一个指定User。像

这样的东西
class User < ActiveRecord::Base
  has_many :father_cars, :class_name => "Car", :inverse_of => :father
  has_many :cars, :inverse_of => :user

  # ...
end

Cars < ActiveRecord::Base
  belongs_to :father, :class_name => "User", :inverse_of => :father_cars
  belongs_to :user, :inverse_of => :cars

  # ...
end

然后,您可以使用

访问:father关系
u = User.find(1)
cars = user.father_cars