2011-08-03 19 views
1

私はユーザーがいます。ユーザーは多数のテーブルを持つことができます。実際、唯一の5Rails関連のカスタム検証

私のテーブルモデルで、私はこれは、すべての良い作品と私​​はテーブルを作成しようと、私のユーザーはすでに5を持っている場合、私は

を言うページを得る

validate :max_tables 

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

を持っています

TablesController#でのActiveRecord :: RecordInvalid

検証に失敗しました:すでに5つのテーブルがあります。

しかし、私は他のバリデーションが満たされていないと、うまく表示されるエラーで新しいテーブルページにリダイレクトされません。何らかの理由で私はこのハードエラーページに固執しています。

アイデア?

編集:私はafter_createコールバックで短いURLを生成していました、そして私はすべてが良かった、という固定したら、そこに私はsave!

を呼んでいた

を解決しました。だから感謝@ house9!

+1

Btw、私は基本的にエラーを追加した後に単にfalseを返すべきだと思います。 – apneadiving

+0

'return false'は私のために何もしません。 – Corey

+1

あなたは保存または保存を呼びますか?あなたのコントローラーで?コントローラの – house9

答えて

0

EDIT:SOLVED 私はafter_createコールバックで短いURLを生成していましたが、そこに私はsaveを呼び出していました!

一度修正してしまえば、すべてがよかった。だから感謝@ house9!

0

errors.add_to_base "You already have 5 tables."を使用してください - 私の最も古くて最大のアプリではerrors.add_to_basereturn falseを使用しています。返品は必要ではないかもしれませんが、テストしていない可能性があります。

+0

私もその方法を試しましたが動作しません。 – Corey