我想对表执行sql查询。我正在解决一个无法继续的问题。
如何使用Active Record查询列不相等的表 为空?下面给出了当前查询,但它没有工作,因为它给我一个空值。
no_sweets = CookieJar.where(cookie_id: array_of_cookies, artificial_sweetner: !nil).count
我想了解array_of_cookies
中包含身份证明且artificial_sweetner
未包含的糖果。
下面的代码工作得很好但是我需要用Rails方式或者说我需要操作对象。
no_sweets = CookieReportingDb.connection.execute("SELECT count(*) FROM cookie_db_new.cookie_jars where artificial_sweetner is not null and cookie_id IN (#{array_of_cookies.join(', ')})").first
我使用ruby 1.9和Rails 3.2。
答案 0 :(得分:2)
你可以把where子句作为字符串放在where
调用中:
no_sweets = CookieJar.where("artificial_sweetner is not null").where(cookie_id: array_of_cookies).count
或 Rails 4 您可以执行以下操作:
no_sweets = CookieJar.where.not(artificial_sweetner: nil).where(cookie_id: array_of_cookies).count
答案 1 :(得分:0)
Rails 3
no_sweets = CookieJar.where(cookie_id: array_of_cookies).where("artificial_sweetner IS NOT NULL").count
Rails 4
no_sweets = CookieJar.where(cookie_id: array_of_cookies).where.not(artificial_sweetner: nil).count