代码之家  ›  专栏  ›  技术社区  ›  Mike W

模型属性不是持久化的Rails

  •  0
  • Mike W  · 技术社区  · 6 年前

    我有个模特 Bank 它有一个持久的属性 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的getter和setter,因为这是API的一部分,我不想重构前端和应用程序。

    非常感谢你的帮助

    1 回复  |  直到 6 年前
        1
  •  1
  •   mtrolle    6 年前

    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
    

      def iban
        @iban ||= ServiceProvider::BankAccount.fetch(user_id)
      end