我正在尝试做一个非常简单的活动记录查询:
@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
答案 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]
,问题已修复。