フィールドの値を制限したい。したがって、列の値は指定された値のセットでなければなりません。移行/モデルを使用することは可能ですか?または、私はDBで手動で行う必要がありますか?列の値を制限する方法
10
A
答えて
24
あなたは、このための検証を使用しますa whole Rails guide on the topicがあります特定:ここ
あなたはかなりのレールのバリデータは何ができるかに比べて限定されているデータベース(でそれを行う場合は、使用したいかもしれないものです。 2015
class Person < ActiveRecord::Base
validates :relationship_status,
:inclusion => { :in => [ 'Single', 'Married', 'Divorced', 'Other' ],
:message => "%{value} is not a valid relationship status" }
end
編集8月:のRails 4.1の時点で、あなたはこのためenum
クラスのメソッドを使用することができますそれはあなたの列があることを必要としますが、この場合には探しているヘルパーは、例えば、:inclusion
です。整数型:
class Person < ActiveRecord::Base
enum relationship_status: [ :single, :married, :divorced, :other ]
end
それは自動的にあまりにも、あなたのためにいくつかの便利なメソッドを定義します。
p = Person.new(relationship_status: :married)
p.married? # => true
p.single? # => false
p.single!
p.single? # => true
あなたがここにenum
のドキュメントを読むことができます:http://api.rubyonrails.org/v4.1.0/classes/ActiveRecord/Enum.html
2
必要な信頼度によって異なります。モデルにバリデーターを追加してその値に制限するだけで、既存のデータが一致していることを確認することはできません(また、バリデーションのために後続の保存が失敗する可能性があります)。また、他のアプリケーション/それを回避するraw SQL
絶対的な信頼を得たい場合は、データベースを使用してください。 http://www.w3schools.com/sql/sql_check.asp
関連する問題
- 1. 配列内の重複する値を制限する方法
- 2. 配列コレクションの値を制限する
- 3. Entity Frameworkの列の値を制限する方法はありますか?
- 4. 2列から値による制限の行を取得する方法
- 5. hrefのテキスト長制限を制限する方法
- 6. データプロパティの制限を個別の値にする方法
- 7. 角2のカウンターの値を制限する方法
- 8. TFS:フィールドの整数値を制限する方法
- 9. Scipy.optimize:引数の値を制限する方法
- 10. PWMデューティサイクル値の範囲を制限する方法は?
- 11. EditText Maxの値を制限する方法15
- 12. Xtext - 値を特定の範囲に制限する方法は?
- 13. Android:制限同期を制限する方法
- 14. スレッドの数を制限する方法
- 15. テキストの幅を制限する方法
- 16. Javaのファイルサイズを制限する方法
- 17. フッタの幅を制限する方法
- 18. コンテンツの幅を制限する方法
- 19. JavaScriptのイベントを制限する方法
- 20. APIのレートを制限する方法
- 21. ウェブサイトのランドスケープモードを制限する方法
- 22. 配列への入力量を制限する方法は? (Java)
- 23. カードデッキの列数を制限する方法は?
- 24. 配列を特定のサイズ(キロバイト)に制限する方法
- 25. 角度jsカスタムポップアップの列を制限する方法
- 26. Excel:値を制限する
- 27. QSpinBoxを有効な値に制限する方法
- 28. Django - 同じ値へのアクセスを制限するユーザ制限
- 29. PHP並列ダウンロードを制限する方法は?
- 30. Retrofit 2.0で並列要求を制限する方法は?
移行レベルで設定することはできますか? – damluar
データベースレベルで制約を設定することができます。たとえば、MySQLとPostgreSQLのカラムタイプは「ENUM」ですが、SQLiteとOracleはそうではありませんが、Railsでは直接サポートしていません。たとえば、サポートされていない列タイプを使用できます。 't.column:col_name、 'CUSTOM SQL TYPE''ですが、それらの値のカスタム処理が多くなり、別のRDBMSでこれらのマイグレーションを実行することができなくなります。他の人)は、ドキュメントがそれに対して特に警告します。 –
ありがとう、仲間。あなたはたくさんの助けになりました! – damluar