在轨道上的ruby中添加关系

时间:2015-01-13 05:54:19

标签: ruby-on-rails relationship

我有两张桌子 我在脚手架的帮助下创建的主题和主题元素 之后,我想添加subject和subject_element之间的关系

可以使用脚手架添加关系吗?

或我们可以添加的任何其他方式?

我尝试了此解决方案Adding foreign key to a rails model但未成功添加

请帮我在铁轨上的红宝石新品 在此先感谢!!!

2 个答案:

答案 0 :(得分:0)

让我们说我们有两个模特(主题,元素) 我想添加以下多对多关联:  1.一个主题可以有多个元素  2.一个元素属于一个主题。

从控制台创建这些模型:

rails g model subject number:string name:string 

rails g model element element_number:string part_number:string subject:references

检查您的迁移:(通过上面的迁移创建元素模型时,将自动添加迁移)

 #app/db/migrate/XXXXX_create_elements.rb
class CreateElements < ActiveRecord::Migration
  def change
    create_table :elements do |t|
      t.string :element_number
      t.string :part_number
      t.references :subject, index: true
      t.timestamps null: false
    end
    add_foreign_key :elements, :subjects
  end
end

现在检查您的模型文件:

 #app/model/subject.rb
 class Subject < ActiveRecord::Base 
   has_many :elements
 end

 #app/model/element.rb 
  class Element < ActiveRecord::Base
   belongs_to :subject #note-this one will be automatically added 
  end

希望这会有所帮助:)

答案 1 :(得分:0)

您发布的链接“将外键添加到Rails模型”确实是正确的方法,但您仍需要进行一些配置。

如果您使用的是Rails 4以下的任何内容,则attr_accessible模型上应该有subject_element.rb。如果没有,请添加它。并将subject_id添加到列表中,使其如下所示:

class SubjectElement < ActiveRecord::Base

attr_accessible :subject_id

...

请注意,它是一个列表,因此多个条目看起来像这样(示例)

attr_accessible :title, :subject_id

然后,请记住添加has_manybelongs_to助手:

 class Subject < ActiveRecord::Base 
   has_many :elements
 end

 class Element < ActiveRecord::Base
  belongs_to :subject 
 end

如果您仍在努力,请将您的subject.rbsubject_element.rb迁移

发给我