Rails自定义关联验证

时间:2011-08-03 22:21:37

标签: ruby-on-rails validation associations

我有一个用户。用户可以拥有多个表。实际,只有5。

在我的桌子模型中我有

validate :max_tables

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

这一切都很好,如果我尝试创建一个表并且我的用户已经有5个,我会得到一个页面

  

TablesController #create中的ActiveRecord :: RecordInvalid

     

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

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

有什么想法吗?

编辑:已解决

我在after_create回调中生成了一个简短的网址,在那里我打电话给save!

一旦我解决了这个问题,一切都很好。谢谢@ house9!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

编辑:已解决 我在after_create回调中生成了一个简短的url,在那里我正在调用save!

一旦我解决了这个问题,一切都很好。谢谢@ house9!