0

在我使用的 Rails 2.3.5 模型中

accepts_nested_attributes_for :questions, :reject_if => lambda { |a| a[:content].blank? }

但是如果有文本框,它的拒绝不是空的。只有在文本框中没有输入任何内容时,我怎样才能让它拒绝?

4

2 回答 2

1

您是否将 reject_if 与记录验证混淆?如果条件为真,reject_if 只是告诉应用程序忽略该组嵌套属性。在您的情况下,如果问题的内容为空白,则问题的属性将被忽略。如果您想验证或以其他方式确保问题记录的内容具有非空白值,您可以将验证放入您的问题模型中。

您也可以考虑将 lambda{} 更改为 proc{}。

于 2012-06-07T13:50:08.270 回答
1

拒绝 if 将保存父对象和任何其他数量的子对象,仅拒绝那些不符合 reject_if 条件的对象。如果这是您想要的,那很好,我建议稍微调试一下,放入打印语句或其他东西,也许

λ { |a| 放 a.inspect; a[:content].空白?}

如果您希望一次性保存整个嵌套对象,请使用验证。

于 2012-06-07T16:36:05.940 回答