Rails - 在Active Record中不相等

时间:2016-02-23 20:31:53

标签: mysql ruby-on-rails ruby ruby-on-rails-3

我想对表执行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。

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