Preksha Patel
2009-Sep-15 05:30 UTC
model validations failed..(as there are two model used)
i have used two model club and user in one form but validation doesn''t call for child model even i have written validates_associated :user in parent model..when i fill information for user and don''t fill for club then validations are called for club but user is saved which i don''t want..so please help me.. Thanks, Preksha. -- Posted via http://www.ruby-forum.com/.
Saurabh Peshkar
2009-Sep-15 05:40 UTC
Re: model validations failed..(as there are two model used)
Hi Preksha, Are you using ''.build'' parameters. (e.g. @club = Club.new @user = @club.users.build(params[:user]) for one(club) to many(users) relations) and in view page specify <%= error_messages_for :club, :user%> Hope this might help. Saurabh -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 06:08 UTC
Re: model validations failed..(as there are two model used)
Saurabh Peshkar wrote:> Hi Preksha, > > Are you using ''.build'' parameters. > > (e.g. @club = Club.new > @user = @club.users.build(params[:user]) for one(club) to many(users) > relations) > > and in view page > > specify <%= error_messages_for :club, :user%> > > Hope this might help. > > Saurabhhi Saurabh there is one-to-one relationship between club and user.. and in club model i have used both validates_associated :user validates_presence_of :user_id, :message => nil then also it is not working.. and in view page i already specified error_messages_for.. -- Posted via http://www.ruby-forum.com/.
Saurabh Peshkar
2009-Sep-15 06:17 UTC
Re: model validations failed..(as there are two model used)
> hi Saurabh > > there is one-to-one relationship between club and user.. > and in club model i have used both > validates_associated :user > validates_presence_of :user_id, :message => nil > then also it is not working.. > > and in view page i already specified error_messages_for..Ok, Try this, def create @club = Club.new(params[:club]) @user = @club.build_user(params[:user]) if @club.valid? @club.save end end This will check if both are valid or not and save them at same time, if any one of them is invalid nothing gets saved. Saurabh. -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 06:24 UTC
Re: model validations failed..(as there are two model used)
Saurabh Peshkar wrote:>> hi Saurabh >> >> there is one-to-one relationship between club and user.. >> and in club model i have used both >> validates_associated :user >> validates_presence_of :user_id, :message => nil >> then also it is not working.. >> >> and in view page i already specified error_messages_for.. > > Ok, > > Try this, > > def create > @club = Club.new(params[:club]) > @user = @club.build_user(params[:user]) > > if @club.valid? > @club.save > end > > endhi Saurabh but i don''t need to write @user.save any where?> > This will check if both are valid or not and save them at same time, if > any one of them is invalid nothing gets saved. > > Saurabh.-- Posted via http://www.ruby-forum.com/.
Saurabh Peshkar
2009-Sep-15 06:26 UTC
Re: model validations failed..(as there are two model used)
> hi Saurabh > > but i don''t need to write @user.save any where? > > >> >> This will check if both are valid or not and save them at same time, if >> any one of them is invalid nothing gets saved. >> >> Saurabh.Please let me know which controller are you trying to use? (Uses or Clubs) -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 06:39 UTC
Re: model validations failed..(as there are two model used)
Saurabh Peshkar wrote:>> hi Saurabh >> >> but i don''t need to write @user.save any where? >> >> >>> >>> This will check if both are valid or not and save them at same time, if >>> any one of them is invalid nothing gets saved. >>> >>> Saurabh. > > Please let me know which controller are you trying to use? (Uses or > Clubs)user controller -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 06:43 UTC
Re: model validations failed..(as there are two model used)
Preksha Patel wrote:> Saurabh Peshkar wrote: >>> hi Saurabh >>> >>> but i don''t need to write @user.save any where? >>> >>> >>>> >>>> This will check if both are valid or not and save them at same time, if >>>> any one of them is invalid nothing gets saved. >>>> >>>> Saurabh. >> >> Please let me know which controller are you trying to use? (Uses or >> Clubs) > > user controlleri wrote that code in users_controoler.rb file but now validations don''t call for any one of them. -- Posted via http://www.ruby-forum.com/.
Saurabh Peshkar
2009-Sep-15 06:46 UTC
Re: model validations failed..(as there are two model used)
Then try this, in users_controllers.rb def create @user = User.new(params[:user]) @club = @user.build_club(params[:club]) if @user.valid? @user.save end end Note: it is not required to specify @club.save because ''.build'' will automatically do that for you. in model/user.rb validates_associated :club Saurabh -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 06:52 UTC
Re: model validations failed..(as there are two model used)
Saurabh Peshkar wrote:> Then try this, > > in users_controllers.rb > > def create > @user = User.new(params[:user]) > @club = @user.build_club(params[:club]) > > if @user.valid? > @user.save > end > > end > > Note: it is not required to specify @club.save because ''.build'' will > automatically do that for you. > > in model/user.rb > validates_associated :club > > Saurabhbut user_id is foreign key in club table..so will it ok to write validates_associated :club in user model? -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 06:56 UTC
Re: model validations failed..(as there are two model used)
Preksha Patel wrote:> Saurabh Peshkar wrote: >> Then try this, >> >> in users_controllers.rb >> >> def create >> @user = User.new(params[:user]) >> @club = @user.build_club(params[:club]) >> >> if @user.valid? >> @user.save >> end >> >> end >> >> Note: it is not required to specify @club.save because ''.build'' will >> automatically do that for you. >> >> in model/user.rb >> validates_associated :club >> >> Saurabh > > > but user_id is foreign key in club table..so will it ok to write > validates_associated :club in user model?i tried for that code but now following error occurs: NoMethodError in UsersController#create undefined method `build_club'' for #<User:0xb5c97e70> -- Posted via http://www.ruby-forum.com/.
Saurabh Peshkar
2009-Sep-15 07:02 UTC
Re: model validations failed..(as there are two model used)
Can you share your model? -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 07:04 UTC
Re: model validations failed..(as there are two model used)
Saurabh Peshkar wrote:> Can you share your model?yeah sure.. club.rb file: class Club < ActiveRecord::Base belongs_to :user belongs_to :city belongs_to :agegroup belongs_to :matches_type belongs_to :role has_many :photos, :as => :attachable #acts_as_rateable has_many :ratings, :as => :rateable has_many :schedules has_many :tournamentclubs has_many :clubadmins has_many :sponsor_clubs has_many :clubheadlines has_many :umpiers has_many :player_profiles has_many :scorecard #acts_as_ferret :fields => [:name, :city_id] #PHONE_NO_MAX_LEN = 15 validates_associated :user #validates_presence_of :user_id, :message => nil validates_presence_of :name end user.rb file: require ''digest/sha1'' class User < ActiveRecord::Base # Virtual attribute for the unencrypted password attr_accessor :password attr_accessible :login, :email, :password, :password_confirmation validates_presence_of :login, :email validates_presence_of :password, :if => :password_required? validates_presence_of :password_confirmation, :if => :password_required? validates_length_of :password, :within => 4..40, :if => :password_required? validates_confirmation_of :password, :if => :password_required? validates_length_of :login, :within => 3..40 validates_length_of :email, :within => 3..100 validates_uniqueness_of :login, :email, :case_sensitive => false before_save :encrypt_password # prevents a user from submitting a crafted form that bypasses activation # anything else you want your user to change should be added here. #validates_associated :club acts_as_state_machine :initial => :pending state :passive state :pending, :enter => :make_activation_code state :active, :enter => :do_activate state :suspended state :deleted, :enter => :do_delete event :register do transitions :from => :passive, :to => :pending, :guard => Proc.new {|u| !(u.crypted_password.blank? && u.password.blank?) } end event :activate do transitions :from => :pending, :to => :active end event :suspend do transitions :from => [:passive, :pending, :active], :to => :suspended end event :delete do transitions :from => [:passive, :pending, :active, :suspended], :to => :deleted end event :unsuspend do transitions :from => :suspended, :to => :active, :guard => Proc.new {|u| !u.activated_at.blank? } transitions :from => :suspended, :to => :pending, :guard => Proc.new {|u| !u.activation_code.blank? } transitions :from => :suspended, :to => :passive end # Authenticates a user by their login name and unencrypted password. Returns the user or nil. def self.authenticate(login, password) u = find_in_state :first, :active, :conditions => {:login => login} # need to get the salt u && u.authenticated?(password) ? u : nil end # Encrypts some data with the salt. def self.encrypt(password, salt) Digest::SHA1.hexdigest("--#{salt}--#{password}--") end # Encrypts the password with the user salt def encrypt(password) self.class.encrypt(password, salt) end def authenticated?(password) crypted_password == encrypt(password) end def remember_token? remember_token_expires_at && Time.now.utc < remember_token_expires_at end # These create and unset the fields required for remembering users between browser closes def remember_me remember_me_for 2.weeks end def remember_me_for(time) remember_me_until time.from_now.utc end def remember_me_until(time) self.remember_token_expires_at = time self.remember_token = encrypt("#{email}--#{remember_token_expires_at}") save(false) end def forget_me self.remember_token_expires_at = nil self.remember_token = nil save(false) end # Returns true if the user has just been activated. def recently_activated? @activated end def forgot_password @forgotten_password = true self.make_password_reset_code end def reset_password # First update the password_reset_code before setting the # reset_password flag to avoid duplicate email notifications. update_attributes(:password_reset_code => nil) @reset_password = true end #used in user_observer def recently_forgot_password? @forgotten_password end def recently_reset_password? @reset_password end def recently_activated? @recent_active end protected def make_password_reset_code self.password_reset_code = Digest::SHA1.hexdigest( Time.now.to_s.split(//).sort_by {rand}.join ) end # before filter def encrypt_password return if password.blank? self.salt = Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{login}--") if new_record? self.crypted_password = encrypt(password) end def password_required? crypted_password.blank? || !password.blank? end def make_activation_code self.deleted_at = nil self.activation_code = Digest::SHA1.hexdigest( Time.now.to_s.split(//).sort_by {rand}.join ) end def do_delete self.deleted_at = Time.now.utc end def do_activate @activated = true self.activated_at = Time.now.utc self.deleted_at = self.activation_code = nil end end -- Posted via http://www.ruby-forum.com/.
Saurabh Peshkar
2009-Sep-15 07:07 UTC
Re: model validations failed..(as there are two model used)
Have you written in user.rb has_one :club Saurabh -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 07:18 UTC
Re: model validations failed..(as there are two model used)
Saurabh Peshkar wrote:> Have you written > > in user.rb > > has_one :club > > Saurabhyes because there is one-to-one relationship between this two model and user_id is foreign key in club table.. -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 07:20 UTC
Re: model validations failed..(as there are two model used)
Preksha Patel wrote:> Saurabh Peshkar wrote: >> Have you written >> >> in user.rb >> >> has_one :club >> >> Saurabh > > yes because there is one-to-one relationship between this two model and > user_id is foreign key in club table..sorry i 4got to add this line.. -- Posted via http://www.ruby-forum.com/.
Saurabh Peshkar
2009-Sep-15 07:23 UTC
Re: model validations failed..(as there are two model used)
Preksha Patel wrote:> Saurabh Peshkar wrote: >> Have you written >> >> in user.rb >> >> has_one :club >> >> Saurabh > > yes because there is one-to-one relationship between this two model and > user_id is foreign key in club table..in your shared user.rb, I hadn''t seen that line hence I asked you. -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 07:24 UTC
Re: model validations failed..(as there are two model used)
Preksha Patel wrote:> Preksha Patel wrote: >> Saurabh Peshkar wrote: >>> Have you written >>> >>> in user.rb >>> >>> has_one :club >>> >>> Saurabh >> >> yes because there is one-to-one relationship between this two model and >> user_id is foreign key in club table.. > > sorry i 4got to add this line..now i wrote this code in users_controller: @user = User.new(params[:user]) @club = @user.build_club(params[:club]) if @user.valid? @user.save end and in user model this code: has_one :club validates_associated :club then also validations didnt called.. -- Posted via http://www.ruby-forum.com/.
Saurabh Peshkar
2009-Sep-15 07:31 UTC
Re: model validations failed..(as there are two model used)
Have you commented the line in club.rb validates_associated :user -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 08:22 UTC
Re: model validations failed..(as there are two model used)
Saurabh Peshkar wrote:> Have you commented the line > > in club.rb > validates_associated :userno i haven''t commented this line.. -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 09:02 UTC
Re: model validations failed..(as there are two model used)
Preksha Patel wrote:> Saurabh Peshkar wrote: >> Have you commented the line >> >> in club.rb >> validates_associated :user > > no i haven''t commented this line..now i have comment out this line and add this line validates_associated :club, :message => nil in user.rb model -- Posted via http://www.ruby-forum.com/.
Saurabh Peshkar
2009-Sep-15 09:22 UTC
Re: model validations failed..(as there are two model used)
Is the code working properly? -- Posted via http://www.ruby-forum.com/.
Abhinav Saxena
2009-Sep-15 09:55 UTC
Re: model validations failed..(as there are two model used)
Preksha, I guess, you should read this: http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributesHopefully, it will solve your problem. Thanks, Abhinav -- अभिनव http://twitter.com/abhinav On Tue, Sep 15, 2009 at 2:32 PM, Preksha Patel < rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Preksha Patel wrote: > > Saurabh Peshkar wrote: > >> Have you commented the line > >> > >> in club.rb > >> validates_associated :user > > > > no i haven''t commented this line.. > > now i have comment out this line and add this line > validates_associated :club, :message => nil > in user.rb model > -- > 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Preksha Patel
2009-Sep-15 11:51 UTC
Re: model validations failed..(as there are two model used)
Saurabh Peshkar wrote:> Is the code working properly?hi if i don''t fill any field then error messages are displayed for both the model but also one message "club nil" as i wrote validates_associated :club, :message => ''nil'' in users model..and if i fill data only for user model and don''t fill for club model then validation called for club with message "club nil" and user doesn''t save... and when i fill information for club model and not for user model then only users model''s validation are called without that "club nil" message.. so now only remaining thing is to remove that message display "club nil"..as its work perfectly now..but thing is to now have to remove that "club nil" message.. -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 12:08 UTC
Re: model validations failed..(as there are two model used)
Preksha Patel wrote:> Saurabh Peshkar wrote: >> Is the code working properly? > > hi if i don''t fill any field then error messages are displayed for both > the model but also one message "club nil" as i wrote > validates_associated :club, :message => ''nil'' in users model..and if i > fill data only for user model and don''t fill for club model then > validation called for club with message "club nil" and user doesn''t > save... and when i fill information for club model and not for user > model then only users model''s validation are called without that "club > nil" message.. > > > so now only remaining thing is to remove that message display "club > nil"..as its work perfectly now..but thing is to now have to remove that > "club nil" message..hey can u tell me if i write validates_associated :club in users model then when i don''t fill information for club then message is displayed "club nil" or "club is invalid" so how can i remove this message?? if i write validates_associated :club, :message => ''nil'' then club nil message is displayed on validation called.. and if i write validates_associated :club, :message => nil then club is invalid message is displayed on validations called.. so what should i write?? Please help me....... -- Posted via http://www.ruby-forum.com/.
Saurabh Peshkar
2009-Sep-15 12:16 UTC
Re: model validations failed..(as there are two model used)
what message you get, if you remove :message => nil after validates_associate :club -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 12:20 UTC
Re: model validations failed..(as there are two model used)
Saurabh Peshkar wrote:> what message you get, if you remove :message => nil after > validates_associate :clubif i remove :message => nil then i get the message "club is invalid" -- Posted via http://www.ruby-forum.com/.
Saurabh Peshkar
2009-Sep-15 12:21 UTC
Re: model validations failed..(as there are two model used)
Preksha Patel wrote:> Saurabh Peshkar wrote: >> what message you get, if you remove :message => nil after >> validates_associate :club > > if i remove :message => nil then i get the message "club is invalid"I''m not getting what exact message you want? -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 12:23 UTC
Re: model validations failed..(as there are two model used)
Saurabh Peshkar wrote:> Preksha Patel wrote: >> Saurabh Peshkar wrote: >>> what message you get, if you remove :message => nil after >>> validates_associate :club >> >> if i remove :message => nil then i get the message "club is invalid" > > I''m not getting what exact message you want?now all the things are working properly but when i don''t fill information for club in the form then "club is invalid" message is displayed with error messages due to validates_associated :club line which i don''t want.. -- Posted via http://www.ruby-forum.com/.
Saurabh Peshkar
2009-Sep-15 12:28 UTC
Re: model validations failed..(as there are two model used)
try this out, in user.rb def after_validation variable = self.errors.reject{ |err| %w{club }.include?(err.first) } self.errors.clear variable.each { |err| self.errors.add(*err) } end might work. -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-15 12:35 UTC
Re: model validations failed..(as there are two model used)
Saurabh Peshkar wrote:> try this out, > > in user.rb > > def after_validation > variable = self.errors.reject{ |err| %w{club }.include?(err.first) } > self.errors.clear > variable.each { |err| self.errors.add(*err) } > end > > might work.hi Saurabh, it is now working properly.. thank u soooooooo much...... but can u please tell me exact meaning of this methos after_validation?? -- Posted via http://www.ruby-forum.com/.
Saurabh Peshkar
2009-Sep-15 12:48 UTC
Re: model validations failed..(as there are two model used)
Please correct me if I''m wrong method after_validation collects all the error messages of club model and rejects the first error message, which is "club is invalid" and collects the remaining messages into variable and adds them to the error list. Saurabh -- Posted via http://www.ruby-forum.com/.
Preksha Patel
2009-Sep-16 08:21 UTC
Re: model validations failed..(as there are two model used)
Saurabh Peshkar wrote:> Please correct me if I''m wrong > > method after_validation collects all the error messages of club model > and rejects the first error message, which is "club is invalid" and > collects the remaining messages into variable and adds them to the error > list. > > Saurabhhey hello!! you are not wrong this code is working properly as u told.. Thanks Saurabh... -- Posted via http://www.ruby-forum.com/.