This behavior was added at https://github.com/rails/rails/pull/7133.

Also don't assume that `update_attributes` and `update_columns` are
analogues. The later is dealing directly with the database without any kind
of interaction with the object instance, so they will behaves differently
in a lot of ways, like type casting for instance.

On Thu, May 7, 2015 at 2:52 PM Rafael Mendonça França <
rafaelmfra...@gmail.com> wrote:

> And what happen if users expect N to be between 1 and <many> and we
> silently do nothing when 0 is sent to these methods?
>
> In my opinion if you don't have changes to be made in the database, just
> don't call the method.
>
> On Thu, May 7, 2015 at 2:47 PM Michael Mahemoff <mahem...@gmail.com>
> wrote:
>
>> Bah I mean "N is between 0 and <many>" (rather than 1 and <many>).
>>
>>
>> On Thursday, 7 May 2015 18:46:51 UTC+1, Michael Mahemoff wrote:
>>>
>>> Basically because http://en.wikipedia.org/wiki/Null_Object_pattern.
>>> It's often the case that systems have to deal with "N" possible changes,
>>> where N is between 0 and 1. e.g. I might have a procedure to gradually
>>> build up a list of things to change, starting with {} and appending to it
>>> if certain conditions are met. It wouldn't be an exceptional situation if
>>> none of those conditions are met.
>>>
>>> On Thursday, 7 May 2015 18:24:50 UTC+1, Rafael Mendonça França wrote:
>>>>
>>>> Are not both cases invalid input? Why should we accept empty hashes?
>>>>
>>>> On Thu, May 7, 2015 at 2:14 PM Michael Mahemoff <mahe...@gmail.com>
>>>> wrote:
>>>>
>>>>> The following will return an error:
>>>>>
>>>>>     > Post.first.update_columns({})
>>>>>     ArgumentError: Empty list of attributes to change
>>>>>
>>>>> I think that's surprising, because I see update_columns as an analogue
>>>>> to update_attributes, just without callbacks happening. An empty hash for
>>>>> the latter is fine:
>>>>>
>>>>>     > Post.first.update_attributes({})
>>>>>     true
>>>>>
>>>>> So shouldn't update_columns support an empty hash too? In the rare
>>>>> cases where callbacks should be avoided and this is needed, it would save
>>>>> having to make a special-case check to prevent the error.
>>>>>
>>>>> --
>>>>> 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 rubyonrails-co...@googlegroups.com.
>>>>> To post to this group, send email to rubyonra...@googlegroups.com.
>>>>> Visit this group at http://groups.google.com/group/rubyonrails-core.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>  --
>> 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 rubyonrails-core+unsubscr...@googlegroups.com.
>> To post to this group, send email to rubyonrails-core@googlegroups.com.
>> Visit this group at http://groups.google.com/group/rubyonrails-core.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
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 rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to