我是新手,并且有一种我无法理解的情况。
假设我有两个资源,用户和小部件。
用户可以使用小部件,但小部件也是用户创建的,并且应由创建它们的用户拥有。需要有用户使用小部件,用户拥有小部件。以下是我要找的内容吗?
Class User < ActiveRecord::Base
has_many :uses
has_many :widgets, :through => :uses
has_many :owns
has_many :widgets, :through => :owns
end
Class Widget < ActiveRecord::Base
has_one :own
has_many :uses
has_many :users, :through => :uses
end
Class Use < ActiveRecord::Base
belongs_to :user
belongs_to :widget
end
Class Own < ActiveRecord::Base
belongs_to :user
belongs_to :widget
end
答案 0 :(得分:1)
我会略有不同。
Class User < ActiveRecord::Base
has_many :uses
has_many :widgets, :through => :uses
has_many :owned_widgets, :class_name => "Widget"
end
Class Widget < ActiveRecord::Base
belongs_to :owner, :class_name => "User"
has_many :uses
has_many :users, :through => :uses
end
Class Use < ActiveRecord::Base
belongs_to :user
belongs_to :widget
end
我稍微更改了名称,widget
上有名称冲突,你不能有两个同名的联想。我还删除了has_one,只需设置一个owner
,其外键为owner_id
,类设置为User
。除此之外,你很好地设置了多对多关系。