【发布时间】:2021-04-07 14:55:29
【问题描述】:
假设我有两个表,它们通过自定义列链接:
table1s
id varchar
user_id varchar
table2s
id varchar
linked_user_id varchar
现在,我尝试在 Ruby 代码中建立关系
class Table1 < ActiveRecord::Base
self.primary_key = "id"
has_many :table2s, primary_key: :user_id, inverse_of: :table1
end
class Table2 < ActiveRecord::Base
self.primary_key = "id"
belongs_to :table1, foreign_key: :linked_user_id, inverse_of: :table2s
end
现在,当我尝试进行 SQL 查询时,它出于某种原因使用 id 列而不是指定的 user_id
Table2.select('table2s.*')
.joins(:table1)
.where('table1s.id = ?', 323235)
生成的 SQL 如下所示:
SELECT table2s.*
FROM table2s
INNER JOIN table1s ON table1s.id = table2s.linked_user_id
WHERE table1s.id = 323235
我期待它是 user_id 而不是 id:
SELECT table2s.*
FROM table2s
INNER JOIN table1s ON table1s.user_id = table2s.linked_user_id
WHERE table1s.id = 323235
有什么想法吗?
【问题讨论】:
标签: ruby-on-rails activerecord ruby-on-rails-5