Skip to content

Array.second_to_last and Array.third_to_last access methods - #23583

Merged
dhh merged 3 commits into
rails:masterfrom
brchristian:penultimate
Feb 10, 2016
Merged

Array.second_to_last and Array.third_to_last access methods#23583
dhh merged 3 commits into
rails:masterfrom
brchristian:penultimate

Conversation

@brchristian

Copy link
Copy Markdown
Contributor

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
Copy Markdown

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

dhh commented Feb 10, 2016

Copy link
Copy Markdown
Member

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
Copy Markdown
Contributor Author

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
Copy Markdown
Member

@brchristian this needs CHANGELOG entry.

@brchristian

Copy link
Copy Markdown
Contributor Author

Thanks! Added activerecord and activesupport CHANGELOG entries in eaa1efe.

dhh pushed 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

jeremy commented Feb 10, 2016

Copy link
Copy Markdown
Member

Next up: #the_end and #beginning_of_the_end 😁

@kaspth

kaspth commented Feb 10, 2016

Copy link
Copy Markdown
Contributor

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

@jeremy

jeremy commented Feb 10, 2016

Copy link
Copy Markdown
Member

🤘

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants