0

早上好,

试图找到最好的方法来避免我现在所处的情况。我有一个 A 类,它具有以下属性 a、b、c、d

当在 A 上调用 create 时,我首先检查是否存在具有以下参数 a、b、c 的 A 实例。

现在我用来检查数据库并在必要时创建的行是

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

A 类对 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使用pre-first_or_create 或错误检查是最好的方法!?

4

1 回答 1

1

从您的两个选项中选择更好begin rescue end,因此您不会重复模型中已有的代码。

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

于 2013-06-26T12:59:27.367 回答