我一周前创建了我的模型,但我现在还不知道很多我知道的东西,所以是时候从头开始创建它了。
我想要完成的是创建:
提供可以拥有多个实验室的模型。
#MIGRATION FILES BELOW:
class CreateLabs < ActiveRecord::Migration[5.0]
def change
create_table :labs do |t|
t.string :name
...
t.timestamps
end
end
end
class CreateOffers < ActiveRecord::Migration[5.0]
def change
create_table :offers do |t|
t.string :name
...
t.timestamps
end
end
end
# Join table:
class CreateLabChain < ActiveRecord::Migration[5.0]
def change
create_table :lab_chain do |t|
t.references :lab, foreign_key: true
t.references :offer, foreign_key: true
t.timestamps
end
end
end
以下是模型文件的样子:
class Lab < ApplicationRecord
has_many :offers, through: :lab_chain
has_many :lab_chains
end
class Offer < ApplicationRecord
has_many :labs, through: :lab_chain
has_many :lab_chains
end
class LabChain < ApplicationRecord
belongs_to :lab
belongs_to :offer
end
我只是想知道我是否写得正确,因为我不确定我所看过和阅读过的那些教程。
如果我希望我的优惠有很多部分,并且部分有多个offer_items,那么奖励问题是什么?我应该加上:
提供:
has_many :sections
has_many :offer_items, through: :section
然后到Section:
has_many :offer_items
belongs_to :offer
和to OfferItem:
belongs_to :section
? 正如我之前提到的,我自愿作为一个为我们学校项目建立网站的人,因为我是唯一一个与代码(不同语言)有关的人。它比我想象的要难。
修改
我如何在Section中正确添加自联接,这样一个部分可以有一个子部分等等?
自我联接添加到章节模型
has_many :child_sections, class_name: "Section", foreign_key: "section_id"
belongs_to :parent_section, class_name: "Section"
已添加到迁移文件
t.references :parent_section, foreign_key: "section_id"
答案 0 :(得分:1)
这看起来像是一个正确的多对多关联。你的第二个看起来也是正确的。
顺便说一句,它有助于绘制一个包含3个以上表格的数据库图表,如果你打算将其作为一个工作,那么真正完全掌握整个表格关系是值得的,因为它是写好的核心型号代码。