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
merged 1 commit into from
Mar 20, 2014

Conversation

ch1ago
Copy link
Contributor

@ch1ago ch1ago commented Mar 19, 2014

No description provided.

@ch1ago
Copy link
Contributor Author

ch1ago commented Mar 19, 2014

I wrote an extra test too

@carlosantoniodasilva
Copy link
Member

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

@ch1ago
Copy link
Contributor Author

ch1ago 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

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

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

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

Could you add a CHANGELOG entry?

@egilburg
Copy link
Contributor

@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.

@ch1ago
Copy link
Contributor Author

ch1ago commented Mar 19, 2014

@rafaelfranca done

@rafaelfranca
Copy link
Member

Could you squash your commits?

@ch1ago
Copy link
Contributor Author

ch1ago 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!

@ch1ago
Copy link
Contributor Author

ch1ago 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.

4 participants