Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
Ruby on rails Rails-指向同一表的列_Ruby On Rails_Database_Model_Rails Activerecord - Fatal编程技术网

Ruby on rails Rails-指向同一表的列

Ruby on rails Rails-指向同一表的列,ruby-on-rails,database,model,rails-activerecord,Ruby On Rails,Database,Model,Rails Activerecord,我有一个包含表容器和端口的数据库 containers表有两列pol_id和pod_id,这两列都指向ports表。ports表有一个id列 我曾尝试在迁移中使用属于/references,但它没有提供这样的灵活性 此外,我对为此配置模型感到有点困惑。在创建迁移时,您可以使用外键选项自定义外键: t.references(:pol, foreign_key: { to_table: :ports }) 在您的模型中,您需要告诉ActiveRecord关联指向哪个类: class Contain

我有一个包含表
容器
端口
的数据库

containers
表有两列
pol_id
pod_id
,这两列都指向
ports
表。
ports
表有一个
id

我曾尝试在迁移中使用
属于/references
,但它没有提供这样的灵活性


此外,我对为此配置模型感到有点困惑。

在创建迁移时,您可以使用
外键
选项自定义外键:

t.references(:pol, foreign_key: { to_table: :ports })
在您的模型中,您需要告诉ActiveRecord关联指向哪个类:

class Container
  belongs_to :pol, class_name: "Port"
end
创建反向关联时,还需要提供外键:

class Port
   has_many :containers_as_pol, class_name: "Container", foreign_key: "pol_id"
end

在容器和端口模型中显示代码我认为您只是想在“属于”关联中指定外键。以下是一个很好的模型配置答案:请注意,“属于”在迁移中只是引用的别名,因此同样适用。