API中的方法会导致模型中的错误,因为模型的名称相同

时间:2016-02-04 16:34:10

标签: ruby-on-rails

我有一个PhoneNumber模型,它与twilio内部连接我验证了数字,我认为发生的事情是我在Twilios API上调用response.phone_number并且模型认为phone_humber是我引用模型中的phone_number。模型存储如下:

******中国

  • PHONE_NUMBER

所以这是PhoneNumber.create(phone_number:“some number”)

有没有办法避免这种情况?这是我的代码:

  def valid_number
    lookup_client = Twilio::REST::LookupsClient.new(ENV['TWILIO_ACCOUNT_SID'], ENV['TWILIO_AUTH_TOKEN'])
    begin
      response = lookup_client.phone_numbers.get(phone_number)
      response.phone_number
      return true
    rescue => e
      if e.code == 20404
        errors.add(:phone_number, 'number is not valid')
        return false
      else
        raise e
      end
    end
  end

错误返回:

undefined method `phone_number' for <Twilio::REST::Lookups::PhoneNumber @path=/v1/PhoneNumbers/>:Twilio::REST::Lookups::PhoneNumber

1 个答案:

答案 0 :(得分:0)

  

未定义的方法`phone_number'   Twilio :: REST ::查找:: ******中国   @路径= / V1 / PHONENUMBERS /:Twilio :: REST ::查找:: ******中国

问题出在这一行

response = lookup_client.phone_numbers.get(phone_number)

此处 Rails 无法识别phone_number实际上是什么。

如果您在model中使用该方法,则以下内容应该有效

response = lookup_client.phone_numbers.get(self.phone_number)

如果您在controller中使用该方法,请检查params进入action并查看params[:phone_number]

response = lookup_client.phone_numbers.get(params[:phone_number])