可以使用脚手架添加关系吗?
或我们可以添加的任何其他方式?
我尝试了此解决方案Adding foreign key to a rails model但未成功添加
请帮我在铁轨上的红宝石新品 在此先感谢!!!
答案 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_many
和belongs_to
助手:
class Subject < ActiveRecord::Base
has_many :elements
end
class Element < ActiveRecord::Base
belongs_to :subject
end
如果您仍在努力,请将您的subject.rb
,subject_element.rb
和迁移