模型属性未保留 rails
model attributes not persisted rails
我有一个模型 Bank
,它有一个名为 iban
的持久化属性
数据发送给第三方。
我想让iban
不持久化到数据库中,每次都从第三方获取信息。
我所做的是这样的:
class Bank < ActiveRecord::Base
[...]
attr_writer :iban
before_save :send_to_service_provider
def iban
ServiceProvider::BankAccount.fetch(user_id)
end
def send_to_service_provider
ServiceProvider::BankAccount.create(iban: iban, user_id: user.id)
end
end
问题是,当我在 send_to_service_provider
中得到 iban
时,它调用了我的方法,但没有得到我传递的值
我需要保留名称为 iban 的 getter 和 setter,因为这是 API 的一部分,我不想重构我的前面,还有我的应用程序
非常感谢您的帮助
考虑使用实例变量:
class Bank < ActiveRecord::Base
[...]
before_save :send_to_service_provider
def iban
ServiceProvider::BankAccount.fetch(user_id)
end
def iban=(value)
@iban = value
end
def send_to_service_provider
ServiceProvider::BankAccount.create(iban: @iban, user_id: user.id)
end
end
这样你甚至可以考虑缓存 ServiceProvider:
def iban
@iban ||= ServiceProvider::BankAccount.fetch(user_id)
end
我有一个模型 Bank
,它有一个名为 iban
的持久化属性
数据发送给第三方。
我想让iban
不持久化到数据库中,每次都从第三方获取信息。
我所做的是这样的:
class Bank < ActiveRecord::Base
[...]
attr_writer :iban
before_save :send_to_service_provider
def iban
ServiceProvider::BankAccount.fetch(user_id)
end
def send_to_service_provider
ServiceProvider::BankAccount.create(iban: iban, user_id: user.id)
end
end
问题是,当我在 send_to_service_provider
中得到 iban
时,它调用了我的方法,但没有得到我传递的值
我需要保留名称为 iban 的 getter 和 setter,因为这是 API 的一部分,我不想重构我的前面,还有我的应用程序
非常感谢您的帮助
考虑使用实例变量:
class Bank < ActiveRecord::Base
[...]
before_save :send_to_service_provider
def iban
ServiceProvider::BankAccount.fetch(user_id)
end
def iban=(value)
@iban = value
end
def send_to_service_provider
ServiceProvider::BankAccount.create(iban: @iban, user_id: user.id)
end
end
这样你甚至可以考虑缓存 ServiceProvider:
def iban
@iban ||= ServiceProvider::BankAccount.fetch(user_id)
end