我正在尝试使用简单表单创建一个使用Rails 4的应用程序。
我有三个模型 - 项目,范围和参与者。
Scope属于Project并接受参与者的嵌套属性。 Participant属于Scope并接受范围的嵌套属性。
在我的参与者视图中,我有一个部分表格。
在我的范围模型中,我有一个布尔属性,询问用户他们是否希望参与他们的项目。如果答案是肯定的,那么我会揭示参与者的部分形式并在参与者模型中提出问题。
在我的javascripts目录中,我有一个表单助手文件,其中我使用JS来隐藏参与者表单,直到范围表单中的答案(关于想要参与者为真),在这种情况下,显示部分。该形式的一个问题是用户是否想要钱。我使用money-rails来将该属性货币化。
我的代码一切正常,除非如果您想在项目创建后编辑项目,您必须取消浏览范围布尔问题(询问您是否想要参与者)并重新点击它,以便显示参与者表单。这就是为什么我修改了我的JS表单助手,以便在更改事件之前检查该布尔值是否为真。
由于这一变化,现在,当我创建一个项目时,当scope属性(询问你是否想要参与者)是假的时候,我无法保存一个新项目因为我收到错误说这些钱参与者中的对象不能是不完整的。我不明白这是如何成为必要的输入(在所有项目中)。我在我的货币初始化程序中有一个验证,它验证了属性的数字,但应该允许它为零。
我更新了我的participant.rb模型以允许null
但是,当我使用新项目测试时,我收到一条错误消息:ERROR:列中的空值" participation_cost_pennies"违反非空约束
有谁知道如何解决这个问题?
谢谢,