ActiveRecordのヴァリデーションを自動化する
- 2013/09/12 (Thu) |
- Ruby on Rails |
- CM(0) |
- Edit |
- ▲Top
ActiveRecord(以下ARと略)にはデータの整合性をチェックするためのヴァリデーションメソッドが用意されているんだが、たくさんのARを扱うWEBアプリを作ろうとすると、個々のARにいちいちテーブルのカラム制約に合せたヴァリデーションを記述するのが面倒くさくなってくる。
そもそもARは対応するテーブルのメタ情報は全て持っているので、それを利用してヴァリデーションを自動記述してしまった方がはっきり言って楽だろう。
――ということで作ってみました。
これをAR側でincludeすればOK.(のはず)
そもそもARは対応するテーブルのメタ情報は全て持っているので、それを利用してヴァリデーションを自動記述してしまった方がはっきり言って楽だろう。
――ということで作ってみました。
module AutoValidates
def self.included(klass)
klass.class_eval{
klass.columns.each do |column|
next if ["id"].include?(column.name)
if [:integer].include?(column.type) && !column.array
# 数値型確認
validates column.name.to_sym,
numericality: {unless: Proc.new{|k| eval("k.#{column.name}").nil?},
only_integer: true
elsif column.null == false
# NOT NULL
validates column.name.to_sym,
presence: {if: Proc.new{|k| eval("k.#{column.name}").nil?}
end
end
}
end
end
これをAR側でincludeすればOK.(のはず)
PR
カレンダー
フリーエリア
最新CM
最新記事
(06/05)
(06/04)
(06/04)
(11/18)
(11/18)
ブログ内検索
最古記事
(09/15)
(09/20)
(09/27)
(09/27)
(10/11)
COMMENT