usersとgroupsの 2 つのテーブルがあります。ユーザーは多くのグループに所属できます。グループには多くのユーザーを含めることができます。
そこで、結合テーブル groups_users を使用して、ユーザーとグループの間にhave_and_belongs_to_many関係を作成しました。これはすべて期待どおりに機能します。
また、ユーザーごとに ACTIVE グループを指定したいと考えています。既に定義した habtm 関係がなかったら、アクティブなグループの users に列「group_id」を作成し、モデル間の 1 対多の関係を次のように定義します。
class User < ActiveRecord::Base
belongs_to :group
end
class Group < ActiveRecord::Base
has_many :users
end
これはうまくいきませんでした。「@user.group.name」などのグループ プロパティにアクセスできませんでした。2 つの関係を指定することで、Rails に多くを求めすぎているのではないかと思います。
そこで、質問が 3 つあります。
- 2 つの関係を組み合わせると Active Record が混乱するかどうかは、非常に簡単に理解できました。そうですか?
- もしそうなら、これらの関係をどのように実装しますか? 今は group_id を手動で使用しているだけですが、面倒です。
- Active Record マジックを使用しているか、アクティブ グループを手動で設定しているかに関係なく、最初の habtm 関係を使用して、ユーザーのアクティブ グループが所属するグループの外にある可能性があります。アクティブなグループがユーザーが属するグループでなければならないという制約を使用してこれを実装する方法について何か考えはありますか?
洞察をありがとう。私は Rails を学習して数週間ですが、この小さな問題の真相を突き止めることで、モデルとテーブルの関係についての理解がかなり深まると思います。