0

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 can を意味しますbelong_to_many :lists

関係を促進するために別のモデルが必要has_many :throughですか、それとも考えすぎですか?

4

1 に答える 1

0

はい、あなたは考えすぎです。必要ありませんhas_many :throughuserが1つしかない場合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。あなたが本当に使いたいのなら、あなたはそうすることができます。

于 2013-02-17T10:22:54.727 に答える