我有以下方法来检查一个人是否有按号码和承运人进行的整合,如果不匹配则仅按号码进行整合。
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
才能保持方法查询(检查一个人是否有按号码和承运人的整合,如果不匹配仅按号码的整合)