【发布时间】:2015-01-13 05:54:18
【问题描述】:
我有两张桌子
我在脚手架的帮助下创建的主题和主题元素
之后我想添加主题和主题元素之间的关系
可以使用脚手架添加关系吗?
或者我们可以添加任何其他方式?
我尝试了这个解决方案Adding foreign key to a rails model,但没有成功添加
请帮助我在 ruby on rails 上的新手 提前谢谢!!!
【问题讨论】:
标签: ruby-on-rails relationship
我有两张桌子
我在脚手架的帮助下创建的主题和主题元素
之后我想添加主题和主题元素之间的关系
可以使用脚手架添加关系吗?
或者我们可以添加任何其他方式?
我尝试了这个解决方案Adding foreign key to a rails model,但没有成功添加
请帮助我在 ruby on rails 上的新手 提前谢谢!!!
【问题讨论】:
标签: ruby-on-rails relationship
假设我们有两个模型(主题,元素) 我正在尝试添加以下 has-to-many 关联: 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
希望这会有所帮助:)
【讨论】:
您发布的“向 Rails 模型添加外键”链接确实是正确的方法,但您仍然需要进行一些配置。
如果您使用低于 Rails 4 的任何东西,您的 subject_element.rb 模型上应该有一个 attr_accessible。如果没有,请添加它。并将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 和迁移
【讨论】: