Ruby on rails 如何在一个关联上传递嵌套值
我有下面的方法来检查一个人是否有一个数字和载体的整合,如果没有匹配一个数字的整合Ruby on rails 如何在一个关联上传递嵌套值,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有下面的方法来检查一个人是否有一个数字和载体的整合,如果没有匹配一个数字的整合 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('numbe
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
但我很快意识到这是在使用当前的个人id
(7750),而不是数字id
SELECT "integrations".* FROM "integrations" WHERE "integrations"."number_id" = 7750 LIMIT 1
我的问题是
number.id
传递给has\u one
关联has_one
查询如何保持方法查询(检查一个人是否通过编号和载体进行了整合,如果不匹配,则仅通过编号进行整合)根据您的代码推断,我认为您需要设置
:主键=>:编号\u id