Joshua Muheim
2006-Jan-23 19:49 UTC
[Rails] validates_uniqueness_of :username, :if => !self.new_record?
Hi all I want users to register on my page. To register, they only have to deliver an email and a password. Then a link with an activation token will be sent to them, and after clicking the link the user sees a page where he should fill in further details, means: a username. My model looks like this: class Member < ActiveRecord::Base validates_presence_of :username, :if => !self.new_record? end Sadly this does not work: it tells me "undefined method `new_record?'' for Member:Class". Where''s the problem? Shouldn''t any ActiveRecord class have a method called ''new_record?''? Thanks for help. Josh -- Posted via http://www.ruby-forum.com/.
Jonathan Viney
2006-Jan-23 20:03 UTC
[Rails] Re: validates_uniqueness_of :username, :if => !self.new_reco
I think you should probably use the :on option here: validates_presence_of :username, :on => :update This will only perform the validation if the record has already been saved. Or, you can do this (not recommended): validates_presence_of :username, :if => Proc.new { |member| !member.new_record? } The reason you can''t do it the way you tried is because self in that context is referring to the Member class, not to any particular instance. Cheers, Jonny. Joshua Muheim wrote:> Hi all > > I want users to register on my page. To register, they only have to > deliver an email and a password. Then a link with an activation token > will be sent to them, and after clicking the link the user sees a page > where he should fill in further details, means: a username. > > My model looks like this: > > class Member < ActiveRecord::Base > validates_presence_of :username, :if => !self.new_record? > end > > Sadly this does not work: it tells me "undefined method `new_record?'' > for Member:Class". > > Where''s the problem? Shouldn''t any ActiveRecord class have a method > called ''new_record?''? > > Thanks for help. > Josh-- Posted via http://www.ruby-forum.com/.
Francois Beausoleil
2006-Jan-23 20:37 UTC
[Rails] validates_uniqueness_of :username, :if => !self.new_record?
Hi ! 2006/1/23, Joshua Muheim <forum@josh.ch>:> class Member < ActiveRecord::Base > validates_presence_of :username, :if => !self.new_record? > endIf you look at the documentation, you''ll see you need to pass a Proc instance: validates_presence_of :username, :if => Proc.new { |record| !record.new_record? } Alternatively, I believe you should be able to do this too: validates_presence_of :username, :on => :update That last part I haven''t tested. Hope that helps ! -- Fran?ois Beausoleil http://blog.teksol.info/
Joshua Muheim
2006-Jan-23 20:38 UTC
[Rails] Re: validates_uniqueness_of :username, :if => !self.new_reco
Thanks a lot. What possible values does :on have? -- Posted via http://www.ruby-forum.com/.
Francois Beausoleil
2006-Jan-23 20:40 UTC
[Rails] Re: validates_uniqueness_of :username, :if => !self.new_reco
2006/1/23, Joshua Muheim <forum@josh.ch>:> Thanks a lot. What possible values does :on have?:save (Always) :create (new_record? == true) :update (new_record? == false) :destroy ? :delete ? Not sure about those two. Check the documentation at http://api.rubyonrails.com Bye ! -- Fran?ois Beausoleil http://blog.teksol.info/
Apparently Analagous Threads
- When adding a record in console, a parameter comes in as null even when I set it
- Login_engine - auth against email rather that username?
- Single form w/ relationships: how do I integrate it?
- .new_record? and :_destroy
- Am I going too far or Rails is just confusing? was {validates_presence_of *_id attributes}