Eugene Gilburg
2014-Jul-04 15:40 UTC
ActiveRecord: #add_select API to add field(s) to #select without removing existing select?
Consider how #order works - it adds additional order to scope instead of
replacing it. To replace, we use #reorder.
We can't change this behavior on #select (making #select be additive and
adding #reselect to be replacing) because it'd break existing APIs. But we
could at least add a method like #add_select or #append select.
In our code, we have a lot of places that go like this:
memberships.includes(:user).select("memberships.*, users.email")
It's even worse for complex joins, where I need to manually remember every
table that would be part of the join (or risk getting attribute missing
errors).
What I want is to just add a field to existing select and not break all the
normal selects already there:
memberships.includes(:user).add_select("users.email")
Naming wise, I'm leaning towards #add_select as opposed to #append_select,
because "append" implies order-specific (as opposed to
"prepend") while
this should be order-insensitive.
Anyone has an opinion?
Thanks!
--
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+unsubscribe@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.