Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从MySQL转换到Postgres并获得';栏「;产品「;不存在';错误_Ruby On Rails_Activerecord_Acts As Taggable On_Rails Postgresql - Fatal编程技术网

Ruby on rails 从MySQL转换到Postgres并获得';栏「;产品「;不存在';错误

Ruby on rails 从MySQL转换到Postgres并获得';栏「;产品「;不存在';错误,ruby-on-rails,activerecord,acts-as-taggable-on,rails-postgresql,Ruby On Rails,Activerecord,Acts As Taggable On,Rails Postgresql,我在rails中使用acts_as_taggable_,并试图获得所有尚未标记的产品的列表。在MySQL中,以下查询有效: def self.untagged available.find(:all, :joins => %{LEFT JOIN taggings ON products.id = taggings.taggable_id AND taggings.taggable_type = "Product"}, :conditions => "t

我在rails中使用acts_as_taggable_,并试图获得所有尚未标记的产品的列表。在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中仍然可以工作。但这是我愿意牺牲的


提前感谢。

您应该在PostgreSQL中使用单引号引用字符串文字,而不是双引号,双引号用于引用标识符(如表名和列名)。MySQL倾向于快速而宽松地使用标准,PostgreSQL倾向于更加严格