ここでかなり基本的な質問は、深度が2以上にならないようにするために、カテゴリモデルのフィルタを前に書く必要があります。作成前にモデル属性を検証する方法
アプリ/モデル/ category.rb
before_create :check_depth
def check_depth
self.depth = 1 if depth > 2
end
私が得る、私はエラーメッセージを返すために、1に深さを設定するのではなく、それを必要とするが、私も、この現在の設定を動作させることはできませんエラー
undefined method `>' for nil:NilClass
ので、代わりに私は、私が代わりにエラーを送信する方法をやろうとしているように1の深さを設定するの?現在の機能が情報提供の目的で機能するよう助けてください。事前に感謝します
検証ロジックがあまり複雑でない場合、カスタムフィルタは必要ありません。 – emrass
あなたが提供した最も簡単な答えで作業しているすべての情報をありがとう、私はカスタムバリデーターを使用するので、確かにI18nを使用しています。あなたの努力にとても感謝します。 – ruevaughn
素晴らしい! I18nは上記の「最もクリーンな」ソリューション(オプション2)でも動作します。 [en | de | ...]。errors.messages.inclusionのロケールでの翻訳が必要な場合、またはここのロケールの例をhttps://github.com/svenfuchs/rails-i18n/treeで入手してください/ master/rails%2Flocaleを基準にしています。カスタムバリデータの場合は、エラーテキスト "mytext ..."の代わりに、depth_not_in_rangeのようなシンボルを入れて[locale]に翻訳してください.activerecord.errors.models.category.attributs.depth.depth_not_in_range – emrass