我正在研究Redmine并在rails上使用Ruby。现在,我需要对表单进行验证。我是否需要编辑模型或控制器以验证表单?
答案 0 :(得分:4)
通常验证会进入模型,但不要忘记控制器需要允许某些参数通过permit
方法传递给模型本身。
控制器的工作是尝试创建或更新模型,然后定义如果不能解决问题会发生什么的行为。这可能是显示错误页面,或发送失败的API调用响应。这取决于你正在建设什么。
答案 1 :(得分:2)
这取决于您要验证的内容;但正如tadman
建议的那样,您需要遵守惯例和define the validations in the model
为什么这样?
答案很简单 - MVC:
当您向Rails应用发送数据时,controller
只会组织数据和数据。将其发送给模型。该模型的工作是验证,保存&将处理后的数据作为object
返回(根据Ruby的OOP结构)。
-
<强>模型强>
Rails'inbuilt validators在模型级别工作(IE通过控制器收到数据后,将其传递给模型 - it 然后验证它):
#app/models/model.rb
Class Model < ActiveRecord::Base
validates :attribute, presence: true
end
如果您的数据未通过此验证,它将基本上将对象返回到您的控制器,然后控制器将呈现相应的视图(可能是显示错误的视图)。
所以要回答你的问题,你一定要在 model
答案 2 :(得分:0)
转到app / views / issues。然后通过从我要验证的属性中删除“:required =&gt; true”来编辑_attributes.html.erb。在那之后,我编辑了 validates_presence_of:subject,:priority,:project,:tracker,:author,:status 来自issues.rb文件的模型。在这里,我可以添加或删除要包含或排除的字段。 通过这种方式,我解决了这个问题......