Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在RubyonRails中设置关联_Mysql_Ruby On Rails_Activerecord - Fatal编程技术网

Mysql 在RubyonRails中设置关联

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

我使用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.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
一些注意事项:

  • 使用迁移对数据库执行各种更改,切勿手动执行
  • 尽可能使用RubyonRails命名约定。这意味着使用
    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的约定,则不必手动提供外键。