Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ActiveRecord#touch should accept multiple attributes #14423

Merged

Conversation

thiagopintodev
Copy link
Contributor

@thiagopintodev thiagopintodev commented Mar 19, 2014

No description provided.

@thiagopintodev
Copy link
Contributor Author

thiagopintodev commented Mar 19, 2014

I wrote an extra test too

@carlosantoniodasilva
Copy link
Member

carlosantoniodasilva commented Mar 19, 2014

Mind explaining a use case for many attributes being updated? Thanks.

@thiagopintodev
Copy link
Contributor Author

thiagopintodev commented Mar 19, 2014

this github page is a good example

When you press "close & comment",
I should update both "closed_at" and "last_commented_at" attributes

raise ActiveRecordError, "cannot touch on a new record object" unless persisted?

attributes = timestamp_attributes_for_update_in_model
attributes << name if name
attributes += names
Copy link
Contributor

@egilburg egilburg Mar 19, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can use attributes.concat(names) to avoid extra object allocation.

Copy link
Member

@rafaelfranca rafaelfranca Mar 19, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And we should do this only if we have any name

Copy link
Contributor Author

@thiagopintodev thiagopintodev Mar 19, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@egilburg I just bm'd it to 100_000_000 times,
the results show a 0.5 .. 1.3% performance improvement,
thanks for the tip 👍

@rafaelfranca
Copy link
Member

rafaelfranca commented Mar 19, 2014

Could you add a CHANGELOG entry?

@egilburg
Copy link
Contributor

egilburg commented Mar 19, 2014

@yakko if we'd be getting into microoptimization, unless b.empty? would be slightly faster than if !b.empty? because ! is a method call in Ruby. But I don't think it'll be a meaningful difference.

@thiagopintodev
Copy link
Contributor Author

thiagopintodev commented Mar 19, 2014

@rafaelfranca done

@rafaelfranca
Copy link
Member

rafaelfranca commented Mar 19, 2014

Could you squash your commits?

@thiagopintodev
Copy link
Contributor Author

thiagopintodev commented Mar 19, 2014

squashed it is

photo.sealed_at # was updated

*James Pinto*

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One last thing: this entry should be at the top. Thanks!

@thiagopintodev
Copy link
Contributor Author

thiagopintodev commented Mar 20, 2014

@rafaelfranca @carlosantoniodasilva the conditions were met and TravisCI has passed 👍

carlosantoniodasilva added a commit that referenced this pull request Mar 20, 2014
ActiveRecord#touch should accept multiple attributes

Conflicts:
	activerecord/CHANGELOG.md
@carlosantoniodasilva carlosantoniodasilva merged commit c80ca4c into rails:master Mar 20, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants