使用create时如何处理验证错误!方法

时间:2011-11-23 19:00:08

标签: ruby-on-rails validation

我对我的选民has_many有一些验证:通过模型。但是,我不太确定如何处理验证错误,因为我正在使用create!这是我的代码:

  def cast_vote_up!(user_id, direction)
    voterships.create!(:issue_id => self.id, :user_id   => user_id,
                                             :direction => direction)
  end

这是我的问题模型。我有问题,用户和用户通过连接模型对问题进行投票。我如何使用create来处理验证中的错误!通常我会做类似

的事情
if @model.save
   #code
else
   #other code
end

但没有.save我不知道该怎么做

1 个答案:

答案 0 :(得分:0)

create!会在失败时抛出错误,但如果您使用create(没有!),则可以像处理save一样处理错误/ p>

if voterships.create(....)
   ...if successfully created...
else
   ...if create failed...
end

使用bang(!)基本上意味着你要求你的应用程序在出现问题时立即停止进一步执行。在某些情况下可能需要这样做,但在处理表单和用户输入时,您需要使用非爆炸版本,因为人们经常会犯下应该被捕获和处理的简单输入错误,而不是显示应用程序错误页面。