0

件名の「奇妙な」で申し訳ありませんが、これが起こっていることです。

次のような ActiveRecord オブジェクトがあります。

class BraintreeCache < ActiveRecord::Base
belongs_to :company, :foreign_key => :subscription_id
serialize :subscription
serialize :credit_card
end

実行中:

BraintreeCache.delete(:subscription_id => "12")

戻ります:

ActiveRecord::StatementInvalid: PGError: ERROR:  missing FROM-clause entry for table "id"
LINE 1: DELETE FROM "braintree_caches" WHERE "id"."subscription_id" ...
                                             ^
: DELETE FROM "braintree_caches" WHERE "id"."subscription_id" = '12'

ここで何が起こっているのですか?「id」はどこから来たのですか?

ありがとうございました、

4

3 に答える 3

1

それで、私が非常に混乱したのは、この削除が機能しているブランチがあるということです。

正しい構文は次のとおりです。

BraintreeCache.delete_all(:subscription_id => "42")

単純な削除がどのように機能していたのか、まだわかりません。

よろしく、

于 2012-08-02T14:45:21.387 に答える
0

deleteそれはおそらくメソッドの誤用から来ています。代わりにこれを試してください:

BraintreeCache.where(:subscription_id => "12").delete_all
于 2012-08-02T14:09:37.560 に答える
0

静的削除メソッドは、最初の引数としてハッシュではなく ID を想定しています。これを試して:

BraintreeCache.find_by_subscription_id("12").delete

編集:

最初にオブジェクトをインスタンス化する必要がない場合は、delete_allメソッドを使用することもできます。

BraintreeCache.delete_all(subscription_id: "12")
于 2012-08-02T14:10:06.493 に答える