Data is storing in database when i had created but it is destroyed after the sign out

I had created users using devise in rails. I am storing user mobile
number and land line number for the user profile, by using this code
it is storing the cell and land line numbers in database but after the
sign out it is not stored in the database. please tell me whats wrong
in my code in users.rb

before_save :build_telephone
before_save :build_cell

validates :code, :presence => true, :numericality => true, :length =>
{ :within => 1…2 }, :on => :update
validates :code2, :presence => true, :numericality => true, :length
=> { :within => 2…4 }, :on => :update
validates :number, :presence => true, :numericality => true, :length
=> { :within => 1…7 }, :on => :update
validates :code1, :presence => true, :numericality => true, :length
=> { :within => 1…2 }, :on => :update
validates :number1, :presence => true, :numericality =>
true, :length => {:minimum => 10, :maximum => 10}, :on => :update

attr_accessor :code,:code2, :number, :code1, :number1

attr_accessible :email, :password, :password_confirmation, :mobile,
:landline, :remember_me , :code, :code2, :number, :code1, :number1

def build_cell
self.mobile = “#{self.code1}-#{self.number1}”
end

def build_telephone
  self.landline = "#{self.code}-#{self.code2}-#{self.number}"
end

Hi Kapil,

Please try with self.save in your methods build_cell & build_telephone.

Eg :

def build_cell
self.mobile = “#{self.code1}-#{self.number1}”
self.save
end

Thanks,

Neethu

Hi,
Thanks for your quickest response, i had added the self.save but i
am getting error as “stack level too deep” on submitting the profile
form

Thanks,
Kapil

Try following this thread, I have not it read completely. It may help
you.

http://www.ruby-forum.com/topic/3233401

  • Neethu

I believe one of the validations is failing in the case where you update
the user profile. Try using something with bang operator(like ‘save!’)
in
the code where you update the user profile (in the controller) to
identify
which validation is failing. (’!’ will raise an exception if any
validation
is failed).

On Mon, Jan 30, 2012 at 11:01 AM, Kapil K. <
[email protected]> wrote:

validates :code, :presence => true, :numericality => true, :length =>
attr_accessor :code,:code2, :number, :code1, :number1
end


Thanks,
Prince

You should not add ‘self.save’ to the method, as you are calling these
functions in ‘before_save’. It means these functions will be invoked
before
saving any object of that model. Calling ‘self.save’ inside it will
result
in an infinite loop.

On Mon, Jan 30, 2012 at 11:44 AM, Kapil K. <
[email protected]> wrote:

[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.


Thanks,
Prince