名前付きフィールド:type
を渡すフォームがあり、値が許可されたタイプの配列内にあるかどうかを確認のように許可されていないタイプを投稿することは許可されていません。
配列は次のようになります
@allowed_types = [
'type1',
'type2',
'type3',
'type4',
'type5',
'type6',
'type7',
etc...
]
使用してみましたvalidates_exclusion_of
またはvalidates_inclusion_of
がありますが、機能していないようです
まず、属性をタイプから別のものに変更します。タイプは、単一テーブル継承などに使用される予約済みの属性名です。
class Thing < ActiveRecord::Base
validates :mytype, :inclusion=> { :in => @allowed_types }
ActiveModel::Validations
はこのためのヘルパーメソッドを提供します。呼び出しの例は次のとおりです。
validates_inclusion_of :type, in: @allowed_types
ActiveRecord :: BaseはすでにActiveModel :: Validationsであるため、何も含める必要はありません。
http://apidock.com/Rails/ActiveModel/Validations/HelperMethods/validates_inclusion_of
また、@ RadBradは、STI用に予約されているため、列名としてtype
を使用しないでください。