Rails 3.1 and I''m working through activeldap which is not exactly ActiveRecord class Group < ActiveLdap::Base def validate errors.add(:base, "You must enter a value for the ''Common name''") unless self.cn.to_s != '''' errors.add(:base, "You must enter a value for the ''GID Number''") unless self.gidNumber.to_s != '''' errors.add(:base, "You must enter a value for the ''Description''") unless self.description.to_s != '''' errors.add(:base, "You must enter a value for the ''sambaGroupType''") unless self["objectclass"].include? "sambaGroupMapping" return errors end irb(main):014:0> @group = Group.new => #<Group objectClass:<top, posixGroup>, must:<cn, gidNumber, objectClass>, may:<description, memberUid, userPassword>, cn: [], commonName: [], description: [], gidNumber: [], memberUid: [], objectClass: ["top", "PosixGroup"], userPassword: []> irb(main):015:0> @group.validate => #<ActiveModel::Errors:0xa4b706c @base=#<Group objectClass:<top, posixGroup>, must:<cn, gidNumber, objectClass>, may:<description, memberUid, userPassword>, cn: [], commonName: [], description: [], gidNumber: [], memberUid: [], objectClass: ["top", "PosixGroup"], userPassword: []>, @messages=#<OrderedHash {:base=>["You must enter a value for the ''Common name''", "You must enter a value for the ''GID Number''", "You must enter a value for the ''Description''", "You must enter a value for the ''sambaGroupType''"]}>> irb(main):016:0> @group.validate.messages.each do |a| irb(main):017:1* puts a irb(main):018:1> end base You must enter a value for the ''Common name'' You must enter a value for the ''GID Number'' You must enter a value for the ''Description'' You must enter a value for the ''sambaGroupType'' You must enter a value for the ''Common name'' You must enter a value for the ''GID Number'' You must enter a value for the ''Description'' You must enter a value for the ''sambaGroupType'' Or if I use my rails app instead and put @group.validate into flash hash, I also get duplication... base You must enter a value for the ''Description'' base You must enter a value for the ''Description'' (and I really would prefer to get the ''base'' out of there altogether but can''t seem to find a way to do that either) -- Craig White ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ craig.white-wmL3h9Ogt9Bhl2p70BpVqQ@public.gmane.orgm 1.800.869.6908 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ www.ttiassessments.com Need help communicating between generations at work to achieve your desired success? Let us help! -- 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.
On Nov 29, 5:37 pm, Craig White <craig.wh...-wmL3h9Ogt9DQT0dZR+AlfA@public.gmane.org> wrote:> Rails 3.1 and I''m working through activeldap which is not exactly ActiveRecord > > class Group < ActiveLdap::Base > def validate > errors.add(:base, "You must enter a value for the ''Common name''") unless self.cn.to_s != '''' > errors.add(:base, "You must enter a value for the ''GID Number''") unless self.gidNumber.to_s != '''' > errors.add(:base, "You must enter a value for the ''Description''") unless self.description.to_s != '''' > errors.add(:base, "You must enter a value for the ''sambaGroupType''") unless self["objectclass"].include? "sambaGroupMapping" > return errors > end >Everytime validate is called you''re adding errors, nothing is resetting errors so it stands to reason that you''re going to get duplicate (or triplicate if validate was called again etc) error messages. Given that activeldap seems to be using active model for its validations stuff it''s going to be very close to active record, so you shouldn''t be calling validate directly - call group.valid? to see if the object is valid and if it isn''t look at group.errors Fred> irb(main):014:0> @group = Group.new > => #<Group objectClass:<top, posixGroup>, must:<cn, gidNumber, objectClass>, may:<description, memberUid, userPassword>, cn: [], commonName: [], description: [], gidNumber: [], memberUid: [], objectClass: ["top", "PosixGroup"], userPassword: []> > > irb(main):015:0> @group.validate > => #<ActiveModel::Errors:0xa4b706c @base=#<Group objectClass:<top, posixGroup>, must:<cn, gidNumber, objectClass>, may:<description, memberUid, userPassword>, cn: [], commonName: [], description: [], gidNumber: [], memberUid: [], objectClass: ["top", "PosixGroup"], userPassword: []>, @messages=#<OrderedHash {:base=>["You must enter a value for the ''Common name''", "You must enter a value for the ''GID Number''", "You must enter a value for the ''Description''", "You must enter a value for the ''sambaGroupType''"]}>> > > irb(main):016:0> @group.validate.messages.each do |a| > irb(main):017:1* puts a > irb(main):018:1> end > base > You must enter a value for the ''Common name'' > You must enter a value for the ''GID Number'' > You must enter a value for the ''Description'' > You must enter a value for the ''sambaGroupType'' > You must enter a value for the ''Common name'' > You must enter a value for the ''GID Number'' > You must enter a value for the ''Description'' > You must enter a value for the ''sambaGroupType'' > > Or if I use my rails app instead and put @group.validate into flash hash, I also get duplication... > > base You must enter a value for the ''Description'' base You must enter a value for the ''Description'' > > (and I really would prefer to get the ''base'' out of there altogether but can''t seem to find a way to do that either) > > -- > Craig White ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ craig.wh...@ttiltd.com > 1.800.869.6908 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~www.ttiassessments.com > > Need help communicating between generations at work to achieve your desired success? Let us help!-- 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.
On Nov 29, 2011, at 4:25 PM, Frederick Cheung wrote:> On Nov 29, 5:37 pm, Craig White <craig.wh...-wmL3h9Ogt9DQT0dZR+AlfA@public.gmane.org> wrote: >> Rails 3.1 and I''m working through activeldap which is not exactly ActiveRecord >> >> class Group < ActiveLdap::Base >> def validate >> errors.add(:base, "You must enter a value for the ''Common name''") unless self.cn.to_s != '''' >> errors.add(:base, "You must enter a value for the ''GID Number''") unless self.gidNumber.to_s != '''' >> errors.add(:base, "You must enter a value for the ''Description''") unless self.description.to_s != '''' >> errors.add(:base, "You must enter a value for the ''sambaGroupType''") unless self["objectclass"].include? "sambaGroupMapping" >> return errors >> end >> > Everytime validate is called you''re adding errors, nothing is > resetting errors so it stands to reason that you''re going to get > duplicate (or triplicate if validate was called again etc) error > messages. > Given that activeldap seems to be using active model for its > validations stuff it''s going to be very close to active record, so you > shouldn''t be calling validate directly - call group.valid? to see if > the object is valid and if it isn''t look at group.errors---- thanks Fred... valid? indeed works and so does errors and yes, it obviously uses ActiveModel now but since it''s LDAP but not user friendly, it''s not for the uninitiated. @group.errors is a mess and @person.errors - fahgettaboutit and will not be useful to someone trying to use the application so I ended up using .to_a.uniq to toss out the dupes... I finally just worked it out a minute ago with this (in my Person model) flash[:error] = @person.validate[''base''].to_a.uniq.join("<br />") apparently have to use .html_safe in my view to view the flash[:error] and it''s reasonably friendly now. Craig -- 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.