1

私は2つのモデルを持っています。1つはItemモデルで、もう1つはEventモデルです。
私がする必要があるのはこれです:

Itemイベントに「チェックアウト」する必要があります。は、上記のイベントの一部であるEventすべてを表示します。Itemイベントが終了すると、ユーザーはバックインにチェックインしItemます。そのイベントに含まれていたすべてのアイテムを引き続き表示できるはずです。

これが私の現在のモデルです。


アイテムモデル:

class Item < ActiveRecord::Base
   has_and_belongs_to_many :events
end

イベントモデル:

class Event < ActiveRecord::Base
   has_many :items
end

私は他の場所で読んだのですが、このようなモデルを使用することができます。このモデルには、各イベントが持つすべてのアイテムが含まれます。

EventList

class EventList < ActiveRecord::Base
   belongs_to :item
   belongs_to :event
end

URLルートを次のようにしたいと思います。

domain.com/Event/:id/items/

domain.com/Event/:id/items/(checkedin or checkedout)

これは物事を行う正しい方法ですか?別のテーブルを用意して:though => name、この特定の問題にを使用する必要がありますか?

4

1 に答える 1

0

あなたは2つを少し混ぜ合わせています。両方のモデルを使用する場合has_and_belongs_to_manyは、それをそのように定義する必要があります。すなわち。

Item Model:

class Item < ActiveRecord::Base
  has_and_belongs_to_many :events
end

イベントモデル:

class Event < ActiveRecord::Base
   has_and_belongs_to_many :items
end

テーブルを使用する:through場合は、両方を。だけで定義しますhas_many

どちらを使うべきか。どちらも正しいです。以下のリンクは、どちらを使用するかを説明しています。(基本的に、結合テーブルで何かをしたい場合は、その:through方法を使用します。それ以外の場合has_and_belongs_to_manyは問題ありません)

http://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many

于 2012-11-19T20:51:48.413 に答える