【发布时间】:2015-10-01 13:46:12
【问题描述】:
我可以在belongs_to 关联中使用jsonb 字段作为foreign_key 吗?大致如下:
belongs_to :product, class_name: "Product", foreign_key: "data ->'product_id'"
【问题讨论】:
标签: ruby-on-rails postgresql rails-activerecord
我可以在belongs_to 关联中使用jsonb 字段作为foreign_key 吗?大致如下:
belongs_to :product, class_name: "Product", foreign_key: "data ->'product_id'"
【问题讨论】:
标签: ruby-on-rails postgresql rails-activerecord
只能在列(或列组)之间定义引用,如the documentation 所述:
FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
【讨论】:
FOREIGN KEY 约束,SELECT * FROM products INNER JOIN instructions ON products.id = instructions.data->'product_id' 仍然是有效的 SQL,不是吗?
product_id 列的表,而没有FOREIGN KEY 的any 形式,则rails 使用该列创建关联和正确的查询没有问题。我想我的意思是您与 PostgreSQL 文档的链接与 rails belongs_to/has_many 配置和创建关联的能力无关,否则多态关联将是不可能的
您可以使用activerecord-json-associations 使用 PostgreSQL JSONB 字段来存储模型的关联信息
【讨论】: