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