3

現在、多対多の関係を実装するために has_and_belongs_to_many を使用しています。ただし、many_to_many テーブルに属性を入れたいと思います。

基本的に私はメールシステムを作成しています。ユーザーと会話があります。ユーザーは多くの会話を持つことができ、会話も多くのユーザーを持つことができます。ただし、既読/未読の属性を使用して、どのメッセージが既読であるかを示すことができるようにしようとしています。会話には多数のユーザーが含まれる可能性があるため、この属性を会話テーブルに配置することは実際的ではありません。これは、会話がすべての人に読まれることを意味するためです。だから、真ん中のテーブルで一番うまくいくと思います。中央のテーブルでその属性にどのようにアクセスできるのか疑問に思っています。属性が読み取られた場合。それにアクセスするためにどのコードを入力し、どのように属性を更新しますか。上記のように、私は has_and_belongs_to_many を使用しています

4

1 に答える 1

6

has-and-belongs-to-many 関連付けに追加の属性が必要な場合は、その関係のモデル クラスを作成する必要があります。これについては、 Rails ガイドの詳細な説明を参照してください。

自分で読んだ後、これは現在のバージョンのRailsで非推奨になっているため、本当にに切り替える必要がありますhas_many :through. connectionモデルは次のようになります (Rails ガイドからコピーおよび変更されています。m2n 関係に適切な名前かどうかはわかりません):

class User < ActiveRecord::Base
  has_many :connections
  has_many :conversations, :through => :connections
end

class Connection < ActiveRecord::Base
  belongs_to :user
  belongs_to :conversation
end

class Conversation < ActiveRecord::Base
  has_many :connections
  has_many :users, :through => :connections
end

そこで、テーブルに追加の属性を追加connectionsし、コードでそれらを参照することができます。

于 2012-04-22T12:59:57.327 に答える