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)