I was discussing with Aaron and we believe that passing relations to these methods should not be advised. This is why we want to add a method to relation to get the low level values.
Rafael Mendonça França http://twitter.com/rafaelfranca https://github.com/rafaelfranca On Thu, Apr 10, 2014 at 2:03 PM, Yves Senn <[email protected]> wrote: > We should keep #to_sql and Arel as private API. The use-case to get the > raw response from the driver remains. > It would be nice to use ActiveRecord to build the SQL but get access to > the raw driver result and not the mapped objects. > > Do the lower level methods like `select_all`, `select_values`, etc. accept > Relations? > > The current documentation is a bit confusing about the API (see > http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-select_values > ): > * The method is in the docs, so it's assumed to be public. > * We name the argument arel, which let's you in belief that arel is > public as well > * The example uses raw SQL. > > It would be good to get some light into the dark. > > On 10.04.2014, at 18:57, Rafael Mendonça França <[email protected]> > wrote: > > to_a is already used to return an Array of objects. > > select_rows seems good to me. > > But Arel and #to_sql seem to be used widely. > > Yes, this is sad. They was never public API. But I think we can't do > anything besides make clear what is public and what is private API. > > Rafael Mendonça França > http://twitter.com/rafaelfranca > https://github.com/rafaelfranca > > > On Thu, Apr 10, 2014 at 1:53 PM, Dheeraj Kumar > <[email protected]>wrote: > >> How about #to_a and #to_h instead? >> >> #to_h would return the results as a hash, useful when you are retrieving >> a single row, but many columns. >> #to_a would return the results as an array of hashes, useful when you >> have multiple rows. >> >> >> On Thu, Apr 10, 2014 at 10:11 PM, Rafael Mendonça França < >> [email protected]> wrote: >> >>> +1, too. >>> >>> I was planning to add this method because calling `to_sql` is not a good >>> solution. I think the name we choose was `select_all`. >>> >>> Rafael Mendonça França >>> http://twitter.com/rafaelfranca >>> https://github.com/rafaelfranca >>> >>> >>> On Thu, Apr 10, 2014 at 1:03 PM, Dheeraj Kumar < >>> [email protected]> wrote: >>> >>>> +1, I do this a lot. >>>> On Apr 10, 2014 9:30 PM, "Evgeniy Sokovikov" <[email protected]> >>>> wrote: >>>> >>>>> Hello. Is it possible to get raw sql query result from >>>>> ActiveRecord::Relation ? >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> Now I can make it this way: >>>>> >>>>> sql = Note.select('count(*), commit_id').group(:commit_id).to_sql >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> ActiveRecord::Base.connection.execute(sql).to_a >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> I would like something like this: >>>>> >>>>> >>>>> Note.select('count(*), commit_id').group(:commit_id).raw >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> But didn't find such method. >>>>> >>>>> >>>>> -- >>>>> 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 [email protected]. >>>>> To post to this group, send email to [email protected] >>>>> . >>>>> Visit this group at http://groups.google.com/group/rubyonrails-core. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> -- >>>> 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 [email protected]. >>>> To post to this group, send email to [email protected]. >>>> Visit this group at http://groups.google.com/group/rubyonrails-core. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> >>> -- >>> 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 [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at http://groups.google.com/group/rubyonrails-core. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> -- >> 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 [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/rubyonrails-core. >> For more options, visit https://groups.google.com/d/optout. >> > > > -- > 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 [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/rubyonrails-core. > For more options, visit https://groups.google.com/d/optout. > > > -- > 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 [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/rubyonrails-core. > For more options, visit https://groups.google.com/d/optout. > -- 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/rubyonrails-core. For more options, visit https://groups.google.com/d/optout.
