Mysql 在RubyonRails中设置关联
我使用ruby中的迁移来创建这些表和模型 我有一个表信息和一个表细节,信息表中的每个条目都可以在细节表中有一个关联 因此,我用以下方法创建了它们:Mysql 在RubyonRails中设置关联,mysql,ruby-on-rails,activerecord,Mysql,Ruby On Rails,Activerecord,我使用ruby中的迁移来创建这些表和模型 我有一个表信息和一个表细节,信息表中的每个条目都可以在细节表中有一个关联 因此,我用以下方法创建了它们: create_table :details do |t| t.integer :id t.string :Bezeichnung t.binary :Koordinaten end create_table :informations do |t| t.integer :id t
create_table :details do |t|
t.integer :id
t.string :Bezeichnung
t.binary :Koordinaten
end
create_table :informations do |t|
t.integer :id
t.integer :DetailID
t.integer :Longitude
t.integer :Latitude
end
在我的信息表中,我得到了一个DetailID,它应该引用Detail表的id
现在我做到了:
ALTER TABLE informations
ADD CONSTRAINT fk_informations_details
FOREIGN KEY (DetailID)
REFERENCES details(id)
这是正确的吗?外键设置正确了吗?或者我必须把外键放在另一个表中
因为我想在我的信息模型中使用以下内容:
has_one :detail, :foreign_key => 'DetailID'
belongs_to :main
详细模型如下所示:
has_one :detail, :foreign_key => 'DetailID'
belongs_to :main
一些注意事项:
detail\u id
而不是DetailID
Information有一个:detail
,RubyonRails将在details
表中查找具有匹配Information\id
的实体
在您的模型中,情况正好相反,
信息包含一个详细信息id
。换言之,RubyonRails会将其指定为信息属于\u-to:detail
和detail拥有\u-one:Information
谢谢!那么,信息表中的外键设置是否正确?我是否也必须在此行中指定外键?属于:detail,foreign\u key=>“detail\u id”如果遵循rails的约定,则不必手动提供外键。