【问题标题】:How to call build on an overwritten getter?如何在覆盖的吸气剂上调用构建?
【发布时间】:2015-08-05 18:06:38
【问题描述】:

我已经在我的一个模型中为 has_many 关系覆盖了一个 getter。这样做的用例是它构建了“假”(非持久)对象,这些对象是计划任务,纯粹是为了在日历上显示它们。例如,任务 A 是一个持久记录,并且有一个其未来发生的列表。此关系的 getter 将获取原始对象,并从未来时间列表中构建任务的任何重复实例,并一次将它们全部返回。

因为被覆盖的 getter 返回的是一个数组而不是一个关系,所以我不能以 simple_form 形式在这个 getter 上调用 .build。例如。

instance_of_model.overwritten_getter.build

将失败,因为您不能在数组上调用 .build。

有没有办法以允许这样做的方式编写覆盖的 getter?如果没有,是否有首选的设计模式来做这样的事情?

【问题讨论】:

    标签: ruby-on-rails-4 rails-activerecord simple-form activemodel


    【解决方案1】:

    我最终通过在具有覆盖 getter 的模型上调用 .new 并在表单声明中明确提供父 ID 来解决此问题。

    而不是form_for (@user.tasks.build)

    变成了form_for (Task.new(user: @user))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多