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.


Reply via email to