2011-11-23 50 views
0

我对我的选民has_many:through模型有一些验证。但是,我不太清楚如何处理验证错误,因为我使用create!这是我的代码:使用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

create!将抛出失败的错误,但是如果你使用create(不!),你可以处理错误您save

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

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