即使在阅读http://guides.rubyonrails.org/association_basics.html以及SO上的一些类似问题之后,我仍然无法想象我需要包含哪些关联。
这是我到目前为止所拥有的:
用户:
has_one :list
列表:
belongs_to :user
has_many :list_items
List_item :
belongs_to :list
问题在于我需要具备允许用户查看其他人列表并将其任何list_items添加到他/她自己的列表中的功能。这意味着list_item可以belong_to_many :lists
。
我是否需要另一种模式来促进has_many :through
关系,或者我是否过度思考?
答案 0 :(得分:0)
是的,你在思考。你不需要has_many :through
。如果user
只有一个list
。他只需将list_item
添加到list
即可。为什么需要has_many :through
。
向用户添加list_item
:
def add_list_item_to_user(user, list_item)
user.list.list_items << list_item
end
那就是它。
如果您想使用list_items
访问user
,可以执行以下操作:
用户模型:
has_many :list_items, :through => :list
从表单中,您可以访问list_items
user
user.list_items
user.list_items << list_item
你有has_one
关系,所以我认为你不必担心through
。如果你真的想用,你可以做到。