The bang methods are private and should not be used in applications (see
the :nodoc: in the method definition)

Rafael Mendonça França
http://twitter.com/rafaelfranca
https://github.com/rafaelfranca


On Wed, Oct 30, 2013 at 1:51 PM, Gary Weaver <[email protected]> wrote:

> I understand that bang methods in the classic Ruby sense are supposed to
> alter the current instance, but getting errors like:
>
> NoMethodError: undefined method `where!' for #<Class:0x007ff1522d3110>
>
> and
>
> NoMethodError: undefined method `includes!' for #<Class:0x007ff1522d3110>
>
> when calling the bang methods from QueryMethods on a model class are
> really not helpful.
>
> It's understandable that you don't want to pass a model class into a
> method that expects a relation that it can act upon and change with a bang
> query method and have it successfully create a new relation and call some
> method on it that is never again seen, hence the error. I also understand
> wanting to avoid any more checking/raising code than necessary in
> ActiveRecord both for maintainability, clarity, and maybe efficiency- but
> just look at this:
>
> 2.0.0p247 :001 > MyModel.to_s
>  => "MyModel"
> 2.0.0p247 :002 > MyModel.new.to_s
>  => "#< MyModel:0x007fc92aa017e8>"
> 2.0.0p247 :003 > MyModel.where({})
>  => ...
> 2.0.0p247 :003 > MyModel.where!({})
> NoMethodError: undefined method `where!' for #<Class:0x007fc92a95a240>
>
> Thanks!
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/rubyonrails-core.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to