Active Record生成错误的查询

时间:2014-01-01 22:34:32

标签: postgresql activerecord heroku sinatra

我正在尝试做一个非常简单的活动记录查询:

@row = Blazer.where(username: 'test').first

PostgreSQL生成:

Blazer.where(username: 'test').to_sql 

输出:

SELECT "blazer".* FROM "blazer" WHERE "username"."value" = 'test'

导致错误:

ERROR -- : PG::UndefinedTable: ERROR:  missing FROM-clause entry for table "username"

我期待以下PostgreSQL结果:

SELECT "blazer".* FROM "blazer" WHERE "username" = 'test'

我该如何解决这个问题?

我正在使用Sinatra的活动记录,该应用程序在Heroku上运行。

我的Blazer课程如下:

class Blazer < ActiveRecord::Base
    # phone:string username:string location:string
end

1 个答案:

答案 0 :(得分:0)

也许这不是正确答案,但我得到了同样的错误。

我正在寻找一个具有某个名字的场地

venue_name = params.require(:season).permit([:venue_name])
venue = Venue.find_by_name(venue_name)

我也试过

venue = Venue.where(name: venue_name).first 

两个都失败了,因为它正在尝试此查询

SELECT  "venues".* FROM "venues"  WHERE "name"."venue_name" = 'venue name' LIMIT 1)

当我在控制台中尝试此操作时,一切看起来都不错。但是,当我检查我所寻找的是非常明显的时候

params.require(:season).permit([:venue_name])

返回一个只有venue_name作为键的哈希,所以不是寻找一个键,而是在寻找哈希。

我切换到params.require(:season).permit([:venue_name])[:venue_name],问题已修复。