我有以下方法检查一个人是否按编号和运营商进行了整合,如果不符合仅按编号进行整合。
class Person
has_one :number
def integration
number_and_carrier = Integration.where('number_id = ? and carrier_id = ?', number.id, carrier.id) if number && carrier
Integration.where('number_id = ?', number.id) if number && number_and_carrier.nil?
end
end
以下代码可以正常工作。但我想知道如何使用has_one
关联完成相同的操作,这样我就可以完全控制返回的集成对象。我可以想象从这样的事情开始
has_one :integration, foreign_key: :number_id
但我很快意识到这是使用当前的person_id
(7750),而不是number_id
。
SELECT "integrations".* FROM "integrations" WHERE "integrations"."number_id" = 7750 LIMIT 1
我的问题是
number.id
传递给has_one
协会?has_one
查询如何保持方法查询(检查某人是否按编号和运营商进行了整合,如果不符合仅按编号进行整合)答案 0 :(得分:0)
从您的代码中推断,我认为您需要设置:foreign_key
:primary_key => :number_id