我在rails中使用acts_as_taggable_on,我正在尝试获取尚未标记的所有产品的列表。在MySQL中,以下查询有效:
def self.untagged
available.find(:all,
:joins => %{LEFT JOIN taggings ON products.id = taggings.taggable_id AND taggings.taggable_type = "Product"},
:conditions => "taggings.id IS NULL AND for_sale IS true",
:order => "products.updated_at DESC"
)
然而,在Postgres中,我收到“Product”列不存在的错误。
生成的SQL似乎是:
SELECT count(*) AS count_all FROM "products" LEFT JOIN taggings ON products.id = taggings.taggable_id AND taggings.taggable_type = "Product" WHERE (taggings.id IS NULL AND for_sale IS true) AND (products.date_expires > '2011-09-12') )
有关如何使其正常工作的任何建议?我更喜欢使用有效的记录友好方式,以便它仍然可以在MySQL中工作。但那是我愿意牺牲的东西。
提前致谢..
答案 0 :(得分:2)
你应该在PostgreSQL中用单引号引用字符串文字,而不是双引号,双引号用于引用标识符(例如表名和列名)。 MySQL倾向于快速和松散地使用标准,PostgreSQL往往更加严格。