I have Admin class & User class and a polymorphic Profile class class Admin < ActiveRecord::Base include ActiveModel::Validations has_one :profile, :as => :profitable accepts_nested_attributes_for :profile validates_associated :profile class User < ActiveRecord::Base include ActiveModel::Validations has_one :profile, :as => :profitable class Profile < ActiveRecord::Base belongs_to :profilable, :polymorphic => true validates :title, :first_name, :last_name , :presence => true, :if =>Proc.new { |p| p[:profilable_type] == "Admin" } I am trying to validates a new Admin form with nested attributes but I don''t need the profile validation for the User class, I wrote a validation in the Profile class with a Proc block to test the profilable_type, but it''s not working .... is there another way to try ? -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On Thu, Jan 19, 2012 at 3:24 PM, Erwin <yves_dufour-ee4meeAH724@public.gmane.org> wrote:> I have Admin class & User class and a polymorphic Profile class > > class Admin < ActiveRecord::Base > include ActiveModel::Validations > has_one :profile, :as => :profitable > accepts_nested_attributes_for :profile > validates_associated :profile > > class User < ActiveRecord::Base > include ActiveModel::Validations > has_one :profile, :as => :profitable > > class Profile < ActiveRecord::Base > belongs_to :profilable, :polymorphic => true > validates :title, :first_name, :last_name , :presence => true, :if > =>Proc.new { |p| p[:profilable_type] == "Admin" } > > I am trying to validates a new Admin form with nested attributes > but I don''t need the profile validation for the User class, > I wrote a validation in the Profile class with a Proc block to test > the profilable_type, but it''s not working .... > is there another way to try ? >Maybe(??) there is a mix-up between "profitable" and "profilable", or is that intentional? HTH, Peter -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Thanks Peter .. just a typing error in my post , actually it''s well written in the models : has_one :profile, :as => :profitable ( even if profitable would make $$) the params sent from the form submit are OK {.. "admin"=>{"area_id"=>"1", "canAdministrate"=>"0", "canManageProject"=>"0", "canShootVideo"=>"0", "canEditVideo"=>"0", "email"=>"", "password"=>"", "password_confirmation"=>"", "profile"=>{"first_name"=>"", "middle_name"=>"", "last_name"=>"", "phone"=>"", "mobile"=>"", "address"=>""}}, "commit"=>"Enregistrer", "action"=>"create", "controller"=>"backoffice/ admins"} you can see params[:admin] and params[:admin][:profile] in the edit action, if I execute a @admin = Admin.new(params[:admin]) @admin.valid? => false @admin.errors = #<ActiveModel::Errors:0x007fde974fc928 @base=#<Admin id: ....@messages={:email=>["doit être rempli(e)"], :password=>["doit être rempli(e)"]} I get only the email and password errors even with a validation in the Profile model validates :title, :first_name, :last_name , :presence => true On Jan 19, 6:13 pm, Peter Vandenabeele <pe...-jNuWw7i2w7syMbTcgqFhxg@public.gmane.org> wrote:> On Thu, Jan 19, 2012 at 3:24 PM, Erwin <yves_duf...-ee4meeAH724@public.gmane.org> wrote: > > I have Admin class & User class and a polymorphic Profile class > > > class Admin < ActiveRecord::Base > > include ActiveModel::Validations > > has_one :profile, :as => :profitable > > accepts_nested_attributes_for :profile > > validates_associated :profile > > > class User < ActiveRecord::Base > > include ActiveModel::Validations > > has_one :profile, :as => :profitable > > > class Profile < ActiveRecord::Base > > belongs_to :profilable, :polymorphic => true > > validates :title, :first_name, :last_name , :presence => true, :if > > =>Proc.new { |p| p[:profilable_type] == "Admin" } > > > I am trying to validates a new Admin form with nested attributes > > but I don''t need the profile validation for the User class, > > I wrote a validation in the Profile class with a Proc block to test > > the profilable_type, but it''s not working .... > > is there another way to try ? > > Maybe(??) there is a mix-up between "profitable" and "profilable", > or is that intentional? > > HTH, > > Peter-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.