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