获取验证错误消息而不保存

bri*_*ran 29 ruby-on-rails ruby-on-rails-3

Post
  :belongs_to :user

User
  :has_many :posts
Run Code Online (Sandbox Code Playgroud)

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

# 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
Run Code Online (Sandbox Code Playgroud)

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

soh*_*tti 51

如果我正确理解您的问题,您希望在不保存模型的情况下获得错误?

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

将返回true或false,具体取决于是否有任何错误.如果有错误.他们将被添加到@post.errors哈希.

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


Rom*_*ain 6

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

  • 对于遇到这个问题的人:推论是,如果您在调用“#valid?”(或“#save”等)之前尝试使用“#errors”,那么即使“valid”,您也可能不会收到任何“错误” ?` 是“假”。 (2认同)