【问题标题】:jsonapi-resources—overriding fieldsjsonapi-resources——覆盖字段
【发布时间】:2017-06-08 06:35:03
【问题描述】:

如果模型中的 nil 是我的资源中的一个字段,我想将其设置为 1。我有以下代码,但资源仍在生成minimum_approvers: nil

有什么想法吗?

module V1
  class EntityResource < BaseResource
    model_hint model: Entity

    attribute :logo
    attribute :minimum_approvers

    def minimum_approvers
      @model.minimum_approvers.nil? ? 1 : @model.minimum_approvers
    end

【问题讨论】:

  • 你能byebug minimum_approvers 方法和检查值是否为零?是空字符串吗?
  • 我在 minimum_approvers 方法中尝试了 byebug — 它甚至从未运行过,资源只是使用模型中同名的字段。
  • 为什么不在模型中考虑before_save 回调并在那里设置值?根据文档,它应该从JSONAPI::Resource 继承为class EntityResource &lt; JSONAPI::Resource

标签: ruby-on-rails ruby-on-rails-5 jsonapi-resources


【解决方案1】:

如果您要调用的方法与模型的属性同名,则不能覆盖它。您能做的最好的事情是在模型中创建一个执行逻辑的方法,然后在您的资源中调用该方法。

【讨论】:

  • 这是我更喜欢 fast_jsonapi 的原因之一 - 以 Rails 方式做事可以提高开发人员的工作效率..
  • 顺便说一句。即使在模型中定义方法似乎也不起作用
猜你喜欢
  • 1970-01-01
  • 2015-03-22
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 2016-09-20
  • 2017-01-26
相关资源
最近更新 更多