I agree and am +1 for deprecating it but I believe the decision to keep it
was already taken.
Em 12/03/2014 22:28, "Anh Nguyen" <[email protected]> escreveu:

> I know, but the problem is that 'update_attribute' is misleading. I'm
> wondering why don't we just deprecate it and force people to use the better
> "update_column" instead. Or at least make "update_attribute" behave like
> "update_column".
>
> On Wednesday, March 12, 2014 11:03:30 PM UTC+7, Rodrigo Rosenfeld Rosas
> wrote:
>>
>>  You should have the database constraint even if update_attribute worked
>> exactly the way you thought it would. It's even stated in the documentation
>> for validates_uniqueness_of:
>>
>> http://api.rubyonrails.org/classes/ActiveRecord/
>> Validations/ClassMethods.html#method-i-validates_uniqueness_of
>>
>> See "Concurrency and integrity". Unless your application is not
>> multi-thread and has a single worker process, but I don't think this is the
>> case, right? ;)
>>
>> Best,
>> Rodrigo.
>>
>> On 12-03-2014 12:30, Anh Nguyen wrote:
>>
>> Sorry, it should be
>>
>> user1.update_attribute(:name, 'New Name')
>>
>>  I switched to update_column but the old code already created some dirty
>> records in the DB. I should have created validation at DB level instead of
>> trusted AR completely.
>>
>> On Wednesday, March 12, 2014 7:27:41 PM UTC+7, Xavier Noria wrote:
>>>
>>>  update_attribute and update_attributes do this:
>>>
>>>    1) They update the passed attributes in the receiver.
>>>
>>>    2) They save the receiver.
>>>
>>>  The arguments say which attributes have to be updated, and as a
>>> convenience the model is saved (callbacks run, timestamps are updated,
>>> etc.).
>>>
>>>  In addition, update_attribute has some extra semantics, in particular
>>> validations are skipped and that's why it succeeded in your example. (Was
>>> the example written by hand? the call does not seem to be valid.)
>>>
>>>  In recent version of Rails you can use update_column(s), whose
>>> semantics are less confusing than the ones of update_attribute. But it is
>>> also going to skip validations and other AR stuff  because it issues
>>> straight SQL.
>>>
>>>
>>   --
> 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/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 [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/d/optout.

Reply via email to