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

Array.second_to_last and Array.third_to_last access methods #23583

Merged
merged 3 commits into from Feb 10, 2016

Conversation

@brchristian
Copy link
Contributor

@brchristian brchristian commented Feb 10, 2016

Reading @dhh's Rails Doctrine essay got me thinking a lot about Rails' second and fifth accessor methods, which I (like DHH) love so much.

One of the things that has occurred to me about once every month or two since I began working with Rails (back in 2008) is that it'd be nice to have similarly natural ways of accessing the end of an array or relation. We have last, but it ends there. It's slightly jarring (for me anyway) to go from x.last to x[-2].

So, here's a proposal to add penultimate and antepenultimate as well. Partly for the delight factor, partly because I think it would actually be useful. (At least, it would to me.)

If next_to_last / second_to_last and third_to_last are more natural, we can easily use those instead, or make them aliases.

This is my first Rails PR, so I've tried to include everything (tests, documentation), but I'm happy to make alterations if I've missed anything.

@rails-bot
Copy link

@rails-bot rails-bot commented Feb 10, 2016

Thanks for the pull request, and welcome! The Rails team is excited to review your changes, and you should hear from @pixeltrix (or someone else) soon.

If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.

Please see the contribution instructions for more information.

@dhh
Copy link
Member

@dhh dhh commented Feb 10, 2016

Good thinking. I've wanted this as well! I'd prefer to go with second_to_last + third_to_last, though. penultimate and antepenultimate are both long, cumbersome, and little used words. Welcome to Rails contributions!

@brchristian
Copy link
Contributor Author

@brchristian brchristian commented Feb 10, 2016

Thank you! Yeah, second_to_last + third_to_last sound good to me too, and I've adjusted accordingly in e8aeda2.

@brchristian brchristian changed the title allow Array.penultimate and Array.antepenultiate access methods allow Array.second_to_last and Array.third_to_last access methods Feb 10, 2016
@brchristian brchristian changed the title allow Array.second_to_last and Array.third_to_last access methods Array.second_to_last and Array.third_to_last access methods Feb 10, 2016
@vipulnsward
Copy link
Member

@vipulnsward vipulnsward commented Feb 10, 2016

@brchristian this needs CHANGELOG entry.

@brchristian
Copy link
Contributor Author

@brchristian brchristian commented Feb 10, 2016

Thanks! Added activerecord and activesupport CHANGELOG entries in eaa1efe.

dhh added a commit that referenced this pull request Feb 10, 2016
Array.second_to_last and Array.third_to_last access methods
@dhh dhh merged commit 074ff5c into rails:master Feb 10, 2016
@jeremy
Copy link
Member

@jeremy jeremy commented Feb 10, 2016

Next up: #the_end and #beginning_of_the_end 😁

@kaspth
Copy link
Member

@kaspth kaspth commented Feb 10, 2016

@jeremy my 💸 is on #apocalypse and #rapture respectively.

@jeremy
Copy link
Member

@jeremy jeremy commented Feb 10, 2016

🤘

@brchristian brchristian deleted the brchristian:penultimate branch Mar 9, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

8 participants
You can’t perform that action at this time.