使用可共享列表项在待办事项列表中建立关联模型

时间:2013-02-17 09:54:34

标签: ruby-on-rails model associations

即使在阅读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关系,或者我是否过度思考?

1 个答案:

答案 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。如果你真的想用,你可以做到。