Hi,
(probably) A newbie questions:
I have a form where a user can choose an email address, but there are
only
some choices for the domain, so I wrote a helper where the local part of
the
email is a text field and the domains is a dropdown list, like:
Select Email: [ my_name ] @ <domain.com>
…which I defined as a helper:
def email_form(tagname, domain_list)
text_field(tagname,“local_part”, :size => 15) + " @ " +
select(tagname, “domain_part”, domain_list)
end
In the database however I only have one email_address textfield which is
the
full email address.
To get that done I added two attr_accessor’s for local_part and
domain_part,
so I can store the information from the forms, and some checks:
Model (part of it):
attr_accessor :local_part
attr_accessor :domain_part
validates_presence_of :local_part, :on => :create
validates_format_of :local_part, :with =>
/^[_.-abcdef…(cut)…890]+$/, :on => :create
def validate_on_create
em = Mail.find_by_email_address(email_address)
errors.add :local_part, ‘Email already taken’ if !em.nil?
end
… and then compose the real email address in the controller on the
submit
action, like:
Controller:
@email = Mail.new
@email.attributes= @params[‘email’]
@email.email_address = @email.local_part+'@'[email protected]_part
This is working so far, but what bothers me … and I am sure there is a
better
solution:
1st: I have to compose the ‘real’ email_address manually on form submit
in the
controller, how can I get this done in the model?
2nd: The error div-tags waste up my helper as they surround the
local_part
only which create a newline. Will look like:
[ my_email ]
@ <domain.com>
3rd: I think the model will end-up to specific on the create event. All
further operation the email address can not be changed anymore… not
nice
imo…
Thanks for any help/advice…
Martin