模型属性未保留 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