I believe that for #errors to pass muster in active_record_helper,
there needs to be three methods in
Datamapper::Validate::ValidationErrors: 'on', 'full_messages' and
'count'. Of these three methods, the only one that is missing is
'count'.

http://github.com/datamapper/dm-more/blob/459fd82a8923d7bf9c3d6ce64ab5f4bba7b867dc/dm-validations/lib/dm-validations/validation_errors.rb

In AR 'count' is an alias for 'size', which is a simple one-liner:

http://api.rubyonrails.org/classes/ActiveRecord/Errors.html#M002504
# File vendor/rails/activerecord/lib/active_record/validations.rb,
line 225
225:     def size
226:       @errors.values.inject(0) { |error_count, attribute|
error_count + attribute.size }
227:     end

I'm not sure if there was a particular reason why 'count' was omitted
from the DM implementation - Is it safe for me to add my own 'count'
method along the lines of the 'size' method in AR or would this break
something in DM?



On Jun 20, 2:56 pm, Yehuda Katz <[email protected]> wrote:
> Is #errors in 0.10 a simple Hash? It would need to duck-type like an AR
> errors object to work.
> -- Yehuda
>
>
>
> On Sat, Jun 20, 2009 at 11:39 AM, Hola <[email protected]> wrote:
>
> > In Rails, you add error messages to the view like so:
>
> > <% remote_form_for(mymodel) do |f| %>
> >   <%= f.error_messages %>
>
> > However, if mymodel is a Datamapper rather than an ActiveRecord model,
> > it produces an error:
>
> > undefined method `count' for {}:Hash
>
> > At the moment I am addressing this unfortunately by removing the call
> > to error_messages in the view.
>
> > Is there a better workaround?
>
> > This is the stack trace, in case it helps (I just updated to the
> > latest 0.10 release candidate for all dm gems).
>
> > ----------------------------------------------------------------------------------------------------
>
> > C:/Ruby18/lib/ruby/gems/1.8/gems/dm-validations-0.10.0/lib/dm-
> > validations/validation_errors.rb:106:in `send'
> > C:/Ruby18/lib/ruby/gems/1.8/gems/dm-validations-0.10.0/lib/dm-
> > validations/validation_errors.rb:106:in `method_missing'
> > C:/Ruby18/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/
> > helpers/active_record_helper.rb:179:in `error_messages_for'
> > C:/Ruby18/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/
> > renderable.rb:77:in `inject'
> > C:/Ruby18/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/
> > helpers/active_record_helper.rb:179:in `each'
> > C:/Ruby18/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/
> > helpers/active_record_helper.rb:179:in `inject'
> > C:/Ruby18/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/
> > helpers/active_record_helper.rb:179:in `error_messages_for'
> > C:/Ruby18/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/
> > helpers/form_helper.rb:984:in `error_messages'
>
> --
> Yehuda Katz
> Developer | Engine Yard
> (ph) 718.877.1325
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"DataMapper" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/datamapper?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to