我已经在我的一个模型中覆盖了一个get_many关系的吸气剂。这样的用例是它构建作为计划任务的“假”(非持久)对象,纯粹是为了在日历上显示它们。例如,任务A是持久记录,并且具有其未来发生的列表。此关系的getter将获取原始对象,并从未来时间列表中构建任务的任何重复实例,并立即返回所有实例。
因为覆盖的getter返回一个数组而不是一个关系,所以我不能以一个simple_form形式在这个getter上调用.build。例如。
instance_of_model.overwritten_getter.build
将失败,因为您无法在阵列上调用.build。
有没有办法以这样的方式编写覆盖的getter?如果没有,是否有一个首选的设计模式来做这样的事情?
答案 0 :(得分:0)
我最终通过在具有覆盖的getter的模型上调用.new并在表单的声明中明确地提供父ID来解决这个问题。
而不是form_for (@user.tasks.build)
成为form_for (Task.new(user: @user))