1

我正在尝试使用 Simple Form 使用 Rails 4 制作应用程序。

我有三个模型——项目、范围和参与者。

Scope 属于 Project 并接受参与者的嵌套属性。Participant 属于 Scope 并接受范围的嵌套属性。

在我的参与者看来,我有一个部分形式。

在我的范围模型中,我有一个布尔属性询问用户是否希望他们的项目参与者。如果答案是正确的,那么我会展示参与者的部分形式并在参与者模型中提出问题。

在我的 javascripts 目录中,我有一个表单助手文件,在其中我使用 JS 隐藏参与者表单,直到范围表单中的答案(关于想要参与者为真),在这种情况下,部分显示。这种形式的问题之一是用户是否想要钱。我使用money-rails 将该属性货币化。

我的代码一切正常,除了如果您想在创建项目后对其进行编辑,您必须取消单击范围布尔问题(询问您是否需要参与者)并重新单击它,以显示参与者表单。这就是为什么我修改了我的 JS 表单助手以在更改事件之前检查该布尔值是否为真。

由于该更改,现在,当我创建项目时,当范围属性(询问您是否需要参与者)为 false 时,我无法保存新项目,因为我收到错误消息说参与者中的金钱对象不能不完整。我不明白这如何成为必要的输入(在所有项目中)。我的钱初始化程序中有一个验证,它验证了属性的数字,但它应该被允许为零。

我更新了我的参与者.rb 模型以允许 null

但是,当我用一个新项目对此进行测试时,我收到一条错误消息:错误:“participation_cost_pennies”列中的空值违反了非空约束

有谁知道如何解决这一问题?

谢谢,

4

0 回答 0