Take a look at this
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html Thi may help
you understamd the order callbacks are fired in and which to use. Yau will
see your 2 callbacks are somewhat redundant (always called once, sometimes
twice) and that you should actually be using before_validation.

On Mon, Jul 20, 2009 at 6:51 PM, Pallavi Naik <[email protected]> wrote:

> Hi,
>
> As per the homework for Rails Active Record Basics it is required to have a
> unique credit card number. The user can enter the number in three different
> formats but the number gets stored in database only in one format. I have
> written the following validation code:
>
> # Validations on credit_card field
>   validates_uniqueness_of :credit_card,
>     :message=>"The credit card number is not unique"
>
>   #Validation on the credit_card field
>   validates_format_of :credit_card,
>     :with => /\A\d\d\d\d(-|\s)?\d\d\d\d(-|\s)?\d\d\d\d(-|\s)?\d\d\d\d\Z/,
>     :on => :create,
>     :message=>"Invalid credit card format"
>
> I have also added following callbacks to save the number in one format in
> the database:
> # Strip everything but numbers
>   def before_save
>     self.credit_card = credit_card.gsub(/[^0-9]/, "") if
> attribute_present?("credit_card")
>   end
>
>   # Strip everything but numbers
>   def before_create
>     self.credit_card = credit_card.gsub(/[^0-9]/, "") if
> attribute_present?("credit_card")
>   end
>
> Now the problem i'm facing is i'm able to save similar credit card numbers
> which are entered in two different formats as '1234-2345-3456-4567' and
> '1234234534564567' since the uniqueness validation is getting checked first
> and then the callbacks are getting called.
> Is there any solution for this problem?
>
> Cheers,
> Pallavi
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "ruby-on-rails-programming-with-passion" group.
To unsubscribe from this group, send email to
ruby-on-rails-programming-with-passion-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/ruby-on-rails-programming-with-passion?hl=en?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to