0

User と Category の 2 つのモデルがあります。次のコードを検討してください

class User < ActiveRecord::Base
    has_and_belongs_to_many :categories
    accepts_nested_attributes_for :categories, :allow_destroy => true
    alias_method :categories=, :categories_attributes=
end

class Category < ActiveRecord::Base
    has_and_belongs_to_many :users
end

カテゴリ テーブルにまだ存在しないカテゴリを作成したいと考えています。カテゴリがテーブルに既に存在する場合は、カテゴリの ID を結合テーブルのユーザーに参照する必要があります。そして、カテゴリのタイプを追加する必要がある参照とともに、結合テーブルにタイプというフィールドを追加する必要があると考えてください。

たとえば

user table:

1, sample_user
2, test_user

category table:

1, category1
2, category2

categories_users:

category_id               user_id       type
      1                     1            type1
      2                     1            type2
      1                     2            type2
      1                     2            type1

また、ユーザーのカテゴリを取得するときは、カテゴリ オブジェクト内のカテゴリのタイプと共にカテゴリ オブジェクトを取得する必要があります。

これどうやってするの?私を助けてください

4

1 に答える 1

2

HABTM 関連付けの結合テーブルに属性が必要な場合は、おそらく結合テーブルを別のモデルにして、has_many :through代わりに使用することを検討する必要があります。

この場合、次のようになります。

class User < ActiveRecord::Base
  has_many :categories, through: :user_categories
end

class Category < ActiveRecord::Base
  has_many :users, through: :user_categories
end

class UserCategory < ActiveRecord::Base # or whatever you want to call it
  belongs_to :user
  belongs_to :category
end
于 2013-09-03T09:15:13.570 に答える