AssociationCountValidator
Custom Rails3 validator to validate records count in the association.
class AssociationCountValidator < ActiveModel::Validations::LengthValidator
MESSAGES = { :wrong_length => :association_count_invalid,
:too_short => :association_count_greater_than_or_equal_to,
:too_long => :association_count_less_than_or_equal_to }.freeze
def initialize(options)
MESSAGES.each { |key, message| options[key] ||= message }
super
end
def validate_each(record, attribute, value)
existing_records = record.send(attribute).reject(&:marked_for_destruction?)
super(record, attribute, existing_records)
end
end
More about the problem (http://homeonrails.com/2012/10/validating-nested-associations-in-rails/) and this validator (http://homeonrails.com/2012/10/associationcountvalidator/).
Written by Anton Kalyaev
Related protips
1 Response
I had a similar question I posted on StackOverflow last year. I included my own implementation there: http://stackoverflow.com/questions/5932509/rails-validating-at-least-one-habtm-relationship
Yours definitely looks more concise, and I see it takes into account records that are marked for deletion, which mine does not.
over 1 year ago
·
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Ruby
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#