我有以下代码:
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
答案 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