在我使用的 Rails 2.3.5 模型中
accepts_nested_attributes_for :questions, :reject_if => lambda { |a| a[:content].blank? }
但是如果有文本框,它的拒绝不是空的。只有在文本框中没有输入任何内容时,我怎样才能让它拒绝?
在我使用的 Rails 2.3.5 模型中
accepts_nested_attributes_for :questions, :reject_if => lambda { |a| a[:content].blank? }
但是如果有文本框,它的拒绝不是空的。只有在文本框中没有输入任何内容时,我怎样才能让它拒绝?
您是否将 reject_if 与记录验证混淆?如果条件为真,reject_if 只是告诉应用程序忽略该组嵌套属性。在您的情况下,如果问题的内容为空白,则问题的属性将被忽略。如果您想验证或以其他方式确保问题记录的内容具有非空白值,您可以将验证放入您的问题模型中。
您也可以考虑将 lambda{} 更改为 proc{}。
拒绝 if 将保存父对象和任何其他数量的子对象,仅拒绝那些不符合 reject_if 条件的对象。如果这是您想要的,那很好,我建议稍微调试一下,放入打印语句或其他东西,也许
λ { |a| 放 a.inspect; a[:content].空白?}
如果您希望一次性保存整个嵌套对象,请使用验证。