我有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个用户。
答案 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
items
,through: :user
基本上,您将模型关系委托给另一个模型。 因此,您无需拨打location.user.items
即可location.items
。 < / p>
答案 1 :(得分:1)
因为你说......
我知道,我可以在Location模型中添加has_many:users,但是该位置应该只有1个用户。
而不是has_many :users
你可以做到这一点
has_one :user