Ben Teese wrote:
> if from_addresses.size == 1
> errors.add("'From' address", "is not a known sender ") unless
> Sender.find_by_email_address(from_addresses[0])
> else
> errors.add("'From' addresses", "expected to contain one email
> address")
> end
I think your main problem is that the if statement is actually running
two validation actions and not just one.
So a first change could be to:
unless from_addresses.size == 1
errors.add("'From' addresses", "expected to contain one email
address")
end
unless Sender.find_by_email_address(from_addresses[0])
errors.add("'From' address", "is not a known sender ")
end
That would simplify this a littel.
Also your code will be a lot easier to read and test if you stripped
each validation out into its own private method. So I'd rewrite your
validation method as:
def validate
@from_addresses = @mail.from_addrs
validate_only_one_from_address
validate_from_address_is_known_sender
end
private
def validate_only_one_from_address
unless @from_addresses.size == 1
errors.add("'From' addresses", "expected to contain one email
address")
end
end
def validate_from_address_is_known_sender
unless Sender.find_by_email_address(@from_addresses[0])
errors.add("'From' address", "is not a known sender ")
end
end
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.