5

ユーザーとイベントの2つのRailsモデルのみでこれを行うことは可能ですか:

Users
|id        |name         |age         |
|1         |danilo       |26          |
|2         |joe          |23          |
|3         |carlos       |50          |
|4         |katy         |45          |

Events_Users
|event_id     |user_id        |confirmed       |
|1            |1              |1               |
|3            |3              |0               |
|4            |3              |1               |
|2            |3              |1               |

Events
|id           |name                     |date            |
|1            |the end of the year      |31/12/2012      |
|2            |the end of the world     |21/12/2012      |
|3            |Party                    |18/12/2012      |
|4            |Dinner                   |19/12/2012      |

問題は、ユーザーがイベントで自分の存在を確認できるかどうかです。このために、テーブル Events_Users を使用し、確認済みの列 (確認済みの場合は 1) を使用しました。モデル「Event_User」なしでRails ActiveRecordでこれを行うにはどうすればよいですか? User モデルで確認済みの列を操作するにはどうすればよいですか?

Rails 3.2.9 を使用しています。

4

3 に答える 3

5

Userと関係がある場合、この関連付けを 2 つのモデルだけで設定することEventmany-to-manyできません。結合モデルまたは結合テーブルが必要です。

あなたの場合、 attribute を追加したため、 Confirmationconfirmedという名前の結合モデルが必要になります(他の人が推奨するように)。関連付けの定義は次のようになります。

class User
  has_many :events, through: :confirmations
  has_many :confirmations
end

class Event
  has_many :users, through: :confirmations
  has_many :confirmations
end

class Confirmation
  belongs_to :user
  belongs_to :event
end
于 2012-12-10T02:40:48.347 に答える
3

User モデルに使用する代わりに、関係を使用して

has_and_belongs_to_many :events

結合テーブル Events_Users を変更します (少し汚れています)。

2 つのbelongs_to関係を持つモデル Confirmation を使用することをお勧めします。

belongs_to :user
belongs_to :event

これがお役に立てば幸いです、アレッサンドロ

于 2012-12-10T00:36:23.030 に答える