Fea*_*ity 7 activerecord ruby-on-rails
我一直在努力解决这个问题,并决定把它扔出去:
我有3个型号,用户,连接,可疑
用户有许多连接,连接有一个可疑,通过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
Run Code Online (Sandbox Code Playgroud)
问题是belongs_to似乎忽略了:主键.
如果我做
u = User.find(:first)
u.suspects
Run Code Online (Sandbox Code Playgroud)
生成的SQL是:
SELECT `suspects`.* FROM `suspects` INNER JOIN `connections` ON `suspects`.id = `connections`.case_id WHERE ((`followers`.user_id = 1))
Run Code Online (Sandbox Code Playgroud)
但它应该是:
SELECT `suspects`.* FROM `suspects` INNER JOIN `connections` ON `suspects`.case_id = `connections`.case_id WHERE ((`followers`.user_id = 1))
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向吗?
詹姆士