rails 3中的多对多关系

时间:2011-03-02 22:01:30

标签: ruby-on-rails ruby-on-rails-3 relationship

我在rails中创建了2个模型并修改了模型类以添加多对多关系(使用has_and_belongs_to_many

class User < ActiveRecord::Base
  has_and_belongs_to_many :categories
end
class Category < ActiveRecord::Base
  has_and_belongs_to_many :users
end

当我通过网络界面创建用户时,我不会被要求选择某些类别。

我错过了什么吗?我读到另一个表是必需的,但它是has_many而不是has_and_belongs_to_many语句的。)

你能帮忙吗?

我认为这是一个新问题,但......

非常感谢,

此致

吕克

2 个答案:

答案 0 :(得分:3)

对于HABTM,您需要一个名为categories_users的连接表。使用此迁移:

def self.up
  create_table :categories_users, :id => false  do |t|
    t.integer :category_id
    t.integer :user_id
  end
end

答案 1 :(得分:0)

您的观点是什么样的? Rails的脚手架不会占多对多,所以你需要自己处理它。

您的数据存储是什么样的?如果您使用的是RDBMS,那么对于多对多关系,您通常需要一个联结表。大多数(所有?)SQL数据库自然不会处理多对多。