gpt4 book ai didi

ruby-on-rails - 不使用主键选项的belongs_to

转载 作者:行者123 更新时间:2023-12-04 03:44:26 24 4
gpt4 key购买 nike

我已经为此苦苦挣扎了一段时间,并决定将其扔在那里:

我有 3 个模型,用户、连接、怀疑

一个用户有很多连接,
一个 Connection 有一个 Suspect,通过 case_id 链接

用户通过其连接有许多嫌疑人。

代码如下:

class User < ActiveRecord::Base
has_many :followers
has_many :suspects, :through => :followers
end

class Connection < ActiveRecord::Base
belongs_to :user
belongs_to :suspect, :primary_key => :case_id , :foreign_key => :case_id
end

class Suspect < ActiveRecord::Base
belongs_to :connection, :primary_key => :case_id , :foreign_key => :case_id
end

问题是belongs_to 似乎忽略了:primary 键。

如果我做
u = User.find(:first)
u.suspects

生成的 SQL 是:
SELECT `suspects`.* FROM `suspects` INNER JOIN `connections` ON `suspects`.id = `connections`.case_id WHERE ((`followers`.user_id = 1))

不过应该是:
SELECT `suspects`.* FROM `suspects` INNER JOIN `connections` ON `suspects`.case_id = `connections`.case_id WHERE ((`followers`.user_id = 1))

有人可以指出我正确的方向吗?

詹姆士

最佳答案

belongs_to 的文档说你可以使用 :primary_key 选项,但我们也从来没有让它工作。也就是说最新版本的rails,2.3.3,特别有一个fix for this

关于ruby-on-rails - 不使用主键选项的belongs_to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1216997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com