2013-06-26 34 views
0

早上好时,first_or_create导致问题与非有效的参数创建对象

试图找到避免目前的情况,我在所以最好的办法.. 我有一个A级 它具有以下属性A,b,C,d

当创建被称为上A,I首先检查,查看是否具有下列参数a,b,C时存在的一个实例。

现在我使用查询的数据库,并在必要时创建订单是

@foo = A.where(:a => params[:A][:a], :b => params[:A][:b],:c => params[:A][:c]).first_or_create! 

A类具有用于以下验证,B,C

a's length > 3 & < 15 
b must be true (checkbox must be checked) 
c's length >50 & < 500 

当用户正在通过在一个空白的形式,我会收到上述线路产生的错误。 据我所知,它是由控制器试图创建一个不符合验证的对象A引起的。

是去这个使用begin rescue end或错误检查预first_or_create的最佳途径! ?

回答

1

从你的两个选项是更好begin rescue end所以你不要重复你已经在型号代码。

另一种选择是使用first_or_create没有感叹号,因此您的代码不会引发错误,然后你可以显示查看错误。我会说这相当于begin rescue end,因为您可以在救援部分的视图中显示显示错误。

+0

我会给非!去看看它是否没有破坏任何东西。感谢您的高举。 – Derptacos