The `bind` argument was added as `bind_values` all the way back in 2010,
with no change to the documentation:
https://github.com/rails/rails/commit/cc468d3ec81d6f1298fca91c0549584b36dafcc6

So the docs are probably just wrong — I’m sure a documentation PR would be
quickly merged.

On Thu, Jun 25, 2015 at 11:18 AM, James Coleman <[email protected]> wrote:

> Furthermore, the definition of find_by_sql truly is confusing in because
> when used the way the docs say to call it, the binds variable does not
> contain the bind variable. For example:
>
> irb(main):010:0> def t(x, y=[])
> irb(main):011:1> puts "x: #{x.inspect}"
> irb(main):012:1> puts "y: #{y.inspect}"
> irb(main):013:1> end
> => :t
> irb(main):014:0> t(1,2)
> x: 1
> y: 2
> => nil
> irb(main):016:0> t([1,2])
> x: [1, 2]
> y: []
>
> On Thu, Jun 25, 2015 at 11:06 AM, Nicolás Sanguinetti <[email protected]>
> wrote:
>
>> > You need to have a deeper understanding of ruby, and specifically the
>> magic of the splat (*) operator.
>>
>> I think you missed that the method signature is `def find_by_sql(sql,
>> binds = [])`, and not `def find_by_sql(sql, *binds)`. There’s no splat in
>> the method signature.
>>
>> Before trying to belittle someone, maybe make sure that you’re actually
>> correct :P
>>
>>  Remember MINSWAN, people.
>>
>> (As for the on-topic conversation, sorry, I have no idea what’s going on
>> with that `binds` argument.)
>>
>> Cheers,
>> -foca
>>
>>
>>
>>
>> On Thu, Jun 25, 2015 at 2:38 PM, Matias Korhonen <[email protected]
>> > wrote:
>>
>>> Hi,
>>>
>>>
>>> We happened to need #find_by_sql today and noticed that it appears to
>>> have a somewhat confusing interface/method definition/documentation.
>>>
>>> The method definition is:
>>>
>>>  def find_by_sql(sql, binds = [])
>>>>   # ...
>>>> end
>>>
>>>
>>> Which would seem to imply that you should use it like this:
>>>
>>>  Post.find_by_sql("SELECT * FROM posts WHERE id = ?", [1])
>>>
>>>
>>> However, that is wrong, you actually need to do (and the examples in the
>>> documentation are like this):
>>>
>>>  Post.find_by_sql(["SELECT * FROM posts WHERE id = ?", 1])
>>>
>>>
>>> I spent some time reading the documentation and code and can't figure
>>> out what the binds argument should be used for.
>>>
>>> Maybe some sort of example or explanation should be added to the
>>> #find_by_sql documentation? I'd do so myself, but I'm having trouble
>>> figuring it out…
>>>
>>>
>>> — Matias
>>>
>>>  --
>>> 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.

Reply via email to