Rails2ですら作ったことなかったのですが、思ったより簡単でした。
config定義
バリデーションクラスを置く場所を定義します。
# config/application.rb
config.autoload_paths += %W(#{config.root}/lib/validators)
バリデーションクラス
options[:message]がバリデーションチェック対象の項目名。
今回はリポジトリ名(name)になりますが、
「リポジトリ名は存在しません。」というようなエラーになります。
# lib/validators/repo_presence_validator.rb
class RepoPresenceValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
unless mail_groups(value)
object.errors[attribute] << (options[:message] || "は存在しません")
end
end
private
def mail_groups(value)
...
end
end
モデル
青字部分が今回作ったバリデーションを呼んでる所になります。
validates :name, :presence => true, :repo_presence => true<参考>
http://railscasts.com/episodes/211-validations-in-rails-3
http://hajimete-ruby.jugem.jp/?eid=69
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。