Hi all,
My User model has_many :phone_numbers . For one form, I need to validate
that
at least two phone (out of three possible) numbers have been entered,
and
that the phone numbers are formed well. Also, if there’s an error with
the
form the phone numbers need to be filled in when the page refreshes.
What’s
the DRYest way to do this?
Thanks!
Daniel
My User model has_many :phone_numbers . For one form, I need to validate that
at least two phone (out of three possible) numbers have been entered, and
that the phone numbers are formed well. Also, if there’s an error with the
form the phone numbers need to be filled in when the page refreshes. What’s
the DRYest way to do this?
Create a before_save method to run the checks? If it fails, set the
errors and return false…
-philip
Perhaps it’d be better to actually include the code. In my controller I
have:
if request.post?
params[:profile]
@profile = current_user
valid = @profile.update_attributes(params[:profile])
%w{@phone_1 @phone_2 @phone_3}.each do |name|
phone_number_params = params[name[1…7]]
if(phone_number_params)
self.instance_variable_set(name,
PhoneNumber.new(phone_number_params))
valid = (@profile.phone_numbers <<
self.instance_variable_get(name)) &&
valid
end
end
if valid
do_something
end
end
@profile ||= current_user
%w{@phone_1 @phone_2 @phone_3}.each do |name
self.instance_variable_set(name, (self.instance_variable_get(name) ||
PhoneNumber.new))
end
and in my model i have
def validate_on_update
errors.add(:phone_numbers, “- you must enter at least two phone
numbers”) if
phone_numbers.size < 2
end
It just seems like I could somehow make this better - any ideas?
Thanks,
Daniel