如何在覆盖的getter上调用build?

时间:2015-08-05 18:06:38

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

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

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

instance_of_model.overwritten_getter.build

将失败,因为您无法在阵列上调用.build。

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

1 个答案:

答案 0 :(得分:0)

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

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

成为form_for (Task.new(user: @user))