我有类似问题跟踪系统的问题,他们有一些问题。
现在在一个页面上,我想给用户一个选项来编辑“问题”的一些内容以及添加评论。编辑和发布是像 / edit 这样的标准内容,但我也想创建一个注释并验证它是否为空白。
我已经发现我可以构建一个注释并为其创建一个表单,但是我应该如何同时检查问题属性和注释属性是否有效?因为每次更新都应该跟一个新评论,但如果问题属性无效,我不想创建新评论。
答案 0 :(得分:0)
我会首先向您的fails_validation?
和Issues
模型添加Comments
方法来检查问题。
其次,您必须从@issue
手动加载params[]
表单数据并在保存之前对其进行验证(无法使用update_attributes(params[:issue])
。)创建新的{{1}并通过Comment
加载它。然后,您可以在两个模型上测试验证,如果失败则返回params[]
操作。
如果两者都通过,您可以正常保存edit
然后@issue
。
@comment
不是最优雅的解决方案,但它应该有效。
答案 1 :(得分:0)
您可以在各自的课程中验证评论模型和问题模型。 我不清楚您是否在Issue中使用'accepts_nested_attributes_for'进行评论。如果是,那么标准的IssueController#update将不会保存记录,如果问题无效,因此它也不会创建评论记录。
这是标准的IssueController#update:
class IssueController < ApplicationController
def update
@issue = Issue.find(params[:id])
if @issue.update_attributes(params[:issue])
redirect_to issues_path, notice: 'issue updated'
else
render action: 'edit'
end
end