The issue here does not seem to be what everyone is addressing. If I understood Anh correctly, when you run update_attribute X on a unsaved model that has one attribute Y set in memory, calling reload will report both X and Y as saved, so it seems to be a reload issue at first glance. I will try and reproduce it shortly.
On Wed, Mar 12, 2014 at 3:13 PM, Rodrigo Rosenfeld Rosas <rr.ro...@gmail.com > wrote: > On 12-03-2014 08:23, Anh Nguyen wrote: > >> POLA http://en.wikipedia.org/wiki/Principle_of_least_astonishment >> >> Examples >> >> ``` >> # user.rb >> class User < ActiveRecord::Base >> attr_accessible :name, :username >> validates :username, uniqueness: true >> end >> >> user1 = User.create(name: 'Name 1', username: 'username1') >> user2 = User.create(name: 'Name 2', username: 'username2') >> >> user1.username = 'username2' >> user1.save # => false >> user1.update_attribute(name: 'New Name') >> user1.reload >> >> user1.username # => 'username2' >> # update_attribute is expected to update the specified attribute, not >> other ones. Thus it is violating POLA >> ``` >> >> > I don't understand. What were you expecting? > > You have updated the name, not the username. > > > -- > 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. > -- Mohamed Wael Khobalatte -- 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.