无法从关联中获取原始对象

时间:2013-12-09 16:35:49

标签: ruby-on-rails

我有以下代码:

account = Account.find(1)
customer = ThirdPartyAPI.retrieve("123456")
account.customers.import(customer)

这是导入方法:

class Customer < ActiveRecord::Base
   belongs_to :account

   def self.import(customer)
      # I need to get the Account ID. 
      # Have tried `self.account.id`, but it throws this:
      # NoMethodError: undefined method `account'
   end
end

import方法中,我正在尝试获取主帐户ID。正如您在我的代码评论中看到的,当我尝试调用self.account.id时,它会引发NoMethodError: undefined method 'account'错误。

我的帐户模型具有关联设置:

class Account < ActiveRecord::Base
  has_many :customers
end

2 个答案:

答案 0 :(得分:0)

您是否尝试将客户添加到帐户的客户群中?如果是这样,你可能想这样做:

account.customers << customer

您无法从类方法访问self.account.id,因为您没有引用类Account的特定实例。

答案 1 :(得分:0)

您从第三方API获得的customer对象不是Customer中的持久对象。没有身份证。

您可以将其视为具有客户属性的哈希。然后,您需要执行此操作来保存它,并为其分配account_id作为account对象。

def self.import(customer_attr, account)
  attr = customer_attr.merge account: account
  customer = create attr
end