Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 获取验证错误消息而不保存_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

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

Ruby on rails 获取验证错误消息而不保存,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,在我的注册工作流程中,他们首先起草一篇文章,然后在下一页输入要注册的用户信息 Post :belongs_to :user User :has_many :posts 但是@没有创建post错误消息,因为我没有保存@post模型,我只是在检查.valid?。如何在不保存的情况下创建错误消息?根据,一旦您在记录上调用了#valid?或#invalid?,就会填充#errors。如果我正确理解您的问题,您希望在不保存模型的情况下获得错误吗 这正是正在发生的事情@post.valid? 将

在我的注册工作流程中,他们首先起草一篇文章,然后在下一页输入要注册的用户信息

Post
  :belongs_to :user

User
  :has_many :posts

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

根据,一旦您在记录上调用了
#valid?
#invalid?
,就会填充
#errors

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

这正是正在发生的事情<代码>@post.valid?

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

如果要保存,只需调用
@post.save

如果成功保存,则返回true;如果在填充过程中出现错误,则返回false。错误

您是正确的。我没有正确显示@post.errors。谢谢对于遇到这个问题的人:推论是,如果在调用
\valid?
(或
\save
,等等)之前尝试处理
\errors
,那么即使
valid?
false,也可能不会得到任何
错误。
# 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