Ruby on rails 关于铁路适当联系的问题
以这种情况为例 您有3种型号:Ruby on rails 关于铁路适当联系的问题,ruby-on-rails,activerecord,associations,has-many,has-many-through,Ruby On Rails,Activerecord,Associations,Has Many,Has Many Through,以这种情况为例 您有3种型号: 诗人-代表一首诗的作者 诗-代表诗人所写的诗 印刷-表示包含诗人诗歌的任何类型的印刷出版物 一开始,诗人和诗歌就很明显: 诗人有许多诗 诗属于诗人 在处理打印模型时,我会感到困惑 在这种情况下,印刷品在某种意义上属于诗人和诗歌。你可以说一个诗人有很多印刷品,或者一首诗有很多印刷品,这是有道理的,但是走相反的路线是很棘手的 如果某个杂志或书籍印刷了一位诗人的5首诗,情况会怎样?或者,其中一首诗发表在10种不同的杂志上 似乎印刷品本身“属于许多”诗歌或诗人。我知道
- 诗人有许多诗
- 诗
属于诗人
Poet :has_many poems
poem :belongs_to poet
poem :has_and_belongs_to_many printings
printing :has_many poems
CreatePoemsPrintingJoinTable < ActiveRecord::Migration
def self.up
create_table :poems_printings, :id => false do |t|
t.integer :poem_id
t.integer :printing_id
end
end
def self.down
drop_table :poems_printings
end
end
因为您使用的是has_和belogs_to_多个关联,所以您需要一个连接表,用于诗歌和打印
您将有这样的迁移
Poet :has_many poems
poem :belongs_to poet
poem :has_and_belongs_to_many printings
printing :has_many poems
CreatePoemsPrintingJoinTable < ActiveRecord::Migration
def self.up
create_table :poems_printings, :id => false do |t|
t.integer :poem_id
t.integer :printing_id
end
end
def self.down
drop_table :poems_printings
end
end
CreatePoemsPrintingJoinTablefalse do | t|
t、 整数:poem\u id
t、 整数:打印\u id
结束
结束
def自动关闭
下拉表格:诗歌打印
结束
结束
其他的桌子很简单
CreateTablePoems < ActiveRecord::Migration
def self.up
create_table :poems, do |t|
t.integer :poet_id
end
end
def self.down
drop_table :poems
end
end
CreateTablePoets < ActiveRecord::Migration
def self.up
create_table :poets do |t|
end
end
def self.down
drop_table :poems
end
end
CreateTablePrintings < ActiveRecord::Migration
def self.up
create_table :printings do |t|
end
end
def self.down
drop_table :printings
end
end
CreateTablePoems
如果一首诗可以出现在许多印刷品中,这会变得更加棘手,不确定这里是否是这样?事实就是如此,我刚刚更新了文本,正如你们发布的答案:习近平会建议一首诗有很多印刷品,我同意,我总是忘记habtm,我更新了我的答案,以反映您是否愿意为您的解决方案添加DB表的外观?我想这很简单,但我只是想确定一下。