Help us understand the problem. What is going on with this article?

Rails | バリデーションの値を外部から参照できるようにする

More than 3 years have passed since last update.

解決

単純な方法だが。
バリデーションの値を定数で書いてしまえば良い。

class Book < ActiveRecord::Base
  TITLE_MAXIMUM_LENGTH = 100

  validates :title, length: { maximum: TITLE_MAXIMUM_LENGTH }
end

参照

Book::TITLE_MAXIMUM_LENGTH

# => 20

改善

このままでは冗長なので。
定数宣言の返り値を使って、1行で書くようにする。

class Book < ActiveRecord::Base
  validates :title, length: { maximum: TITLE_MAXIMUM_LENGTH = 100 }
end

補足

Book.validators_on(:title) メソッドは配列を返すため。
特定のバリデーションの値を得るのは面倒そうだったので、この方法にした。

何か他の方法があれば教えて下さい。

環境

  • Ruby 2.0.0
  • Rails 4.0.0
Yinaura
https://twitter.com/yumainaura / mv here http://qiita.com/Yumainaura / yumainaura / 稲浦悠馬 / いなうらゆうま
https://twitter.com/yumainaura
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away