Rails:通过关联获取错误,找不到关联

时间:2015-08-24 01:32:29

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord

我有3个型号,

用户,位置,项目

位置只有1个用户,但用户有很多项目或位置。和项目属于用户或位置。

class Location < ActiveRecord::Base
  belongs_to :user
  has_many items, through: :users
end

class User < ActiveRecord::Base
  has_many :locations
  has_many :items
end

class Item < ActiveRecord::Base
  belongs_to :user
end

但是我收到了这个错误:

Could not find the association :users in model Location

我知道,我可以在位置模型中添加has_many :users,但位置应该只有1个用户。

2 个答案:

答案 0 :(得分:1)

应该是这样:

class Location < ActiveRecord::Base
  has_one :user
  has_many items, through: :user
end

class User < ActiveRecord::Base
  belongs_to :location
  has_many :items
end

class Item < ActiveRecord::Base
  belongs_to :user
end

为了更有意义,请以这种方式阅读:

Location has_one user

User belongs_to location

User has_many items

Item belongs_to user

Location has_many itemsthrough: :user

基本上,您将模型关系委托给另一个模型。 因此,您无需拨打location.user.items即可location.items < / p>

答案 1 :(得分:1)

因为你说......

  

我知道,我可以在Location模型中添加has_many:users,但是该位置应该只有1个用户。

而不是has_many :users你可以做到这一点

has_one :user