Posted filed under Ruby on Rails.

友達のブログで探してるって書いてたので、自分で使ってるソースを晒してみる。

# 指定したカラムのみでvalid?を実行
#
# ActiveRecord#valid_columns?(:login, :password)
#

class ActiveRecord::Errors
  # 指定したカラムのエラーを削除
  def delete(column)
    @errors.delete(column.to_s)
  end
end

module ActiveRecord::Validations
  # 指定したカラムのみをvalid?
  def valid_columns?(*columns)
    valid?
    cols = columns.flatten.collect(&:to_s)
    errors.delete_if do |column, error|
      !cols.include?(column)
    end
    errors.empty?
  end
end

* 変更 02/24 06:58*
 eachの中でdeleteやめて、delete_ifを使う様にした。

2 Responses to “【Rails】一部のフィールドのみvalidを実行する”