0

我有以下方法来检查一个人是否有按号码和承运人进行的整合,如果不匹配则仅按号码进行整合。

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

我的问题是

  1. 我怎样才能将其传递number.idhas_one协会?
  2. 查询如何has_one才能保持方法查询(检查一个人是否有按号码和承运人的整合,如果不匹配仅按号码的整合)
4

1 回答 1

0

从您的代码中推断:foreign_key,我认为您需要设置而不是设置:primary_key => :number_id

于 2013-04-28T21:14:24.220 回答