Hi,
I'm confused trying to get a simple conditional find working and would
greatly appreciate any insight into what might be happening here. I
have ='s working ok but 'IN' is failing.
I have 2 models:
class Site < ActiveRecord::Base
has_many :chargers
class Charger < ActiveRecord::Base
belongs_to :site
I'm trying to simply filter chargers.connector by one or more
connector values. I can do this with SQL no problem but I'm really
hoping to understand why I can't get this working with ActiveRecord:
This Works - search by a single value:
sitesinrange = Site.find(:all, :include => :chargers, :conditions =>
["chargers.connector = ?", "a"])
This Works -searching by a fixed number of values:
siteinrange = Site.find(:all, :include => :chargers, :conditions =>
['chargers.connector = ? OR chargers.connector = ?', "A","B"])
This Fails - Trying to use "in" with an array:
sitesinrange = Site.find(:all, :include => :chargers, :conditions =>
["chargers.connector in ?", ["a","b"]])
Here's the hopefully relevant portions of the SQL statement that is
logged:
ActiveRecord::StatementInvalid:
[snip]
FROM `sites` LEFT OUTER JOIN `chargers` ON chargers.site_id =
sites.id WHERE (charger.connector in 'a','b')
And the stack:
from /ruby/1.9.1/gems/activerecord-2.3.5/lib/active_record/
connection_adapters/abstract_adapter.rb:219:in `rescue in log'
from /ruby/1.9.1/gems/activerecord-2.3.5/lib/active_record/
connection_adapters/abstract_adapter.rb:202:in `log'
from /ruby/1.9.1/gems/activerecord-2.3.5/lib/active_record/
connection_adapters/mysql_adapter.rb:323:in `execute'
from /ruby/1.9.1/gems/activerecord-2.3.5/lib/active_record/
connection_adapters/mysql_adapter.rb:608:in `select'
from /ruby/1.9.1/gems/activerecord-2.3.5/lib/active_record/
connection_adapters/abstract/database_statements.rb:7:in `select_all'
from /ruby/1.9.1/gems/activerecord-2.3.5/lib/active_record/
connection_adapters/abstract/query_cache.rb:62:in
`select_all_with_query_cache'
from /ruby/1.9.1/gems/activerecord-2.3.5/lib/active_record/
associations.rb:1617:in `select_all_rows'
from /ruby/1.9.1/gems/activerecord-2.3.5/lib/active_record/
associations.rb:1395:in `block in find_with_associations'
from /ruby/1.9.1/gems/activerecord-2.3.5/lib/active_record/
associations.rb:1393:in `catch'
from /ruby/1.9.1/gems/activerecord-2.3.5/lib/active_record/
associations.rb:1393:in `find_with_associations'
from /ruby/1.9.1/gems/activerecord-2.3.5/lib/active_record/base.rb:
1546:in `find_every'
from /ruby/1.9.1/gems/activerecord-2.3.5/lib/active_record/base.rb:
615:in `find'
from (irb):3
from /usr/bin/irb:13:in `<main>'
Thanks much!