0

我有两个模型用户和类别。考虑以下代码

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 回答