[Rails] Re: [AR] #{id} namespace visibility used in finder_sql

Jeremy Evans jeremyevans0 at gmail.com
Wed Mar 1 00:17:27 GMT 2006


On 2/28/06, Mark Reginald James <mrj at bigpond.net.au> wrote:
> Mathieu Chappuis wrote:
>
> >   has_many :senders,
> >            :class_name => 'Service',
> >            :finder_sql => "select  sendername, sendercode from legacy_senders
> >                            where cid in (
> >                                select cid from legacy_mail
> >                                 serid = #{id}
> >                               ) "
> >  end
> >
> > In the log, the query for
> >
> >>s=Service.find(number).senders
> >
> > give the objectid (253625) in the SQL, not the the record'id (124)
> > from the Service.
>
> Use single quotes rather than double quotes around your finder_sql
> in order to delay evaluation.

Or escape it:

           :finder_sql => "select  sendername, sendercode from legacy_senders
                           where cid in (
                               select cid from legacy_mail
                                serid = \#{id}
                              ) "

Escaping may be better than using single quoted strings, as it allows
you to subsitute some values with #{} but not others.


More information about the Rails mailing list