0

次のような単一テーブル継承モデルがあります。

class Application < ActiveRecord::Base
  has_many :snapshots, :dependent => :destroy
  has_many :foos, :dependent => :destroy
end

class Snapshot < ActiveRecord::Base
end

class Foo < Snapshot
end

スナップショット/Fooクラスには、変数名'when'の日付があります。has_many(foos)関係に:order =>'when'(または:when)を追加すると、データベースはオブジェクトにアクセスするとエラーをスローします。例:application.foos.each..。

生成されたクエリ:

SELECT "snapshots".* FROM "snapshots"  WHERE "snapshots"."type" IN ('Foo') AND "snapshots"."application_id" = 25 ORDER BY when

*「when」付近のエラー:構文エラー

クエリを手動で編集して、rails dbconsoleに入力すると、次のようになります。

SELECT "snapshots".* FROM "snapshots"  WHERE "snapshots"."type" IN ('Foo') AND "snapshots"."application_id" = 25 ORDER BY "snapshots"."when"

クエリは機能します。

これは既知のRails3のバグですか、それとも特別な構文がありますか?回避策はありますか?

4

3 に答える 3

0

タイミングで試す

  query.order(:when)
于 2012-10-05T07:58:39.633 に答える
0

いくつかのことを試した後、これはうまくいきました:

@application.foos.order("\"snapshots\".\"when\"")

これにより、適切な「スナップショット」でクエリが生成されました。「いつ」

于 2012-10-12T00:32:40.087 に答える
0

これを試して

SELECT *FROM snapshots where type IN ('Foo') AND application_id = 25 ORDER BY when
于 2012-10-05T08:04:05.587 に答える