Ruby on Rails Tuesday, November 29, 2011

On Nov 29, 2011, at 4:25 PM, Frederick Cheung wrote:
> On Nov 29, 5:37 pm, Craig White <craig.wh...@ttiltd.com> 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@googlegroups.com.
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.

No comments:

Post a Comment