2011-08-03 75 views
1

我有一个用户。用户可以有许多表格。实际中,只有5Rails关联的自定义验证

在我的台式我有

validate :max_tables 

def max_tables 
if user.tables.count > 5 
    errors[:base] << "You already have 5 tables." 
end 
end 

这工作都好,如果我尝试创建一个表,我的用户已经有5个,我得到一个网页,上面写着

TablesController中的ActiveRecord :: RecordInvalid#create

验证失败:您​​已经有5个表。

但是我不会重定向回到新的表格页面,如果没有满足其他验证,就会显示错误。出于某种原因,我陷入了这个硬错误页面。

任何想法?

编辑:解决

我在after_create回调产生短网址,并在那里我打电话save!

一旦我固定的,一切都很好。所以谢谢@ house9!

+1

顺便说一句,我认为你应该简单地返回false后添加错误基地 – apneadiving

+0

'返回false'对我没有任何帮助。 – Corey

+1

你打电话保存或保存!在你的控制器? – house9

回答

0

编辑:已解决 我在after_create回调中生成一个简短的URL,并且在那里我打电话保存!

一旦我修好了,一切都很好。所以谢谢@ house9!

0

使用errors.add_to_base "You already have 5 tables." - 在我最古老和最大的应用程序中,我使用errors.add_to_basereturn false - 可能不需要返回,但我没有测试过它。

+0

我也试过这个方法,不起作用。 – Corey