所以我的这个模型名为Post
,而has_many :comments
。每条评论都有一个title
字段。
Comment
模型具有以下结构:
class Comment < ActiveRecord::Base
belongs_to :post
validates :title, presence: true
end
这是我的Post
模型:
class Post < ActiveRecord::Base
has_many :comments
end
因此,在我的Posts
控制器 中,我添加了特定帖子的评论,如下所示:
@post.comments.create(title: params[:title])
但即使params[:title]
为空,也不会显示任何错误,即使模型上有validates
次调用。
为什么会这样?如何解决这个问题?
答案 0 :(得分:0)
create
方法不会引发错误,而是在失败时返回nil
。当方法失败时,调用create!
代替引发错误。与update
和update!
相同。
编辑:
要获得comments
错误,请将代码更改为:
@comment = @post.comments.build(title: params[:title])
if @comment.save
redirect_to comment_path(@comment) #or wherever you want to go
else
render 'new'
end
@post.errors
返回帖子本身的错误。 IIRC,它会说comments is invalid
之类的东西。但要真正得到错误,您必须致电@comment.errors
。
答案 1 :(得分:0)
你可以改用这样的东西:
@comment = @post.comments.build(title: params[:title])
@comment.save
如果评论验证失败,则返回false