Rails添加了多对多关联?

时间:2014-02-01 13:17:19

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 rails-migrations

我有一个“问题”模型和一个“标签”模型。我为这两个模型添加了多对多关联。 这就是我现在所拥有的:

class Question < ActiveRecord::Base
  attr_accessible :content, :score, :title
   has_and_belongs_to_many :tags

end

class Tag < ActiveRecord::Base
  attr_accessible :description, :name
   has_and_belongs_to_many :questions
end

如何更新数据库和控制器?

感谢

2 个答案:

答案 0 :(得分:0)

您可以参阅关联here的Rails指南。这是一段代码片段:

# Models
class Assembly < ActiveRecord::Base
  has_and_belongs_to_many :parts
end

class Part < ActiveRecord::Base
  has_and_belongs_to_many :assemblies
end

# Corresponding migration for creating models and join table
class CreateAssembliesAndParts < ActiveRecord::Migration
  def change
    create_table :assemblies do |t|
      t.string :name
      t.timestamps
    end

    create_table :parts do |t|
      t.string :part_number
      t.timestamps
    end

    create_table :assemblies_parts do |t|
      t.belongs_to :assembly
      t.belongs_to :part
    end
  end
end

答案 1 :(得分:0)

使用以下命令为连接表创建迁移:

$ rails g migration questions_tags question_id:integer tag_id:integer

在数据库中创建表:

$ rake db:migrate

Rails magic将帮助您填充连接表。我创建了一个带有has_and_belongs_to_many示例的many-to-many code quiz,您可能会觉得有用。