2013-02-17 66 views
0

即使在阅读http://guides.rubyonrails.org/association_basics.html以及一些类似的问题后,我仍然无法想象我需要包含哪些关联。模型关联待办事项列表中的可共享列表项

这是我到目前为止有:

用户

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

是的,你在想什么。你不需要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 

就是这样。

如果你想使用user你可以像下面list_items访问:

用户模式:

has_many :list_items, :through => :list 

构成本可以在user

user.list_items 
    user.list_items << list_item 

你有has_one访问list_items关系,所以我认为你不需要太担心through。如果你真的想用你可以做的。

+0

非常感谢:D – FelixFortis 2013-02-17 11:53:06

+0

此外,我想要统计有多少用户具有某些特定功能:列表中的list_items,并且每个用户应该能够更新列表中的list_item的完成状态:list而不需要改变另一个列表中list_item的状态。 上面的关联方法会允许吗? 谢谢! – FelixFortis 2013-02-17 19:03:30