31
Post
  :belongs_to :user

User
  :has_many :posts

在我的注册工作流程中,他们首先起草一个帖子,然后在下一页输入他们的用户信息进行注册。

# intermediate step, validate that Post is valid before moving on to User creation
# posts_controller:

@post = Post.new(params[:post])
if @post.valid?
  # go on to create User
else
  render 'new'
end

但!没有创建@post 错误消息,因为我没有保存我正在检查的@post 模型.valid?。如何在不保存的情况下创建错误消息?

4

2 回答 2

54

如果我正确理解了您的问题,您想在不保存模型的情况下得到错误吗?

这正是正在发生的事情。@post.valid?

将根据是否有任何错误返回 true 或 false。如果有错误。它们将被添加到@post.errors哈希中。

在您想要保存的情况下,@post.save 如果成功保存,则返回 true;如果在填充@post.errors过程中出现错误,则返回 false

于 2012-06-12T11:51:46.613 回答
8

根据文档,一旦你打电话#valid?#invalid?记录,#errors就会被填充。

于 2012-06-12T11:50:42.707 回答