0

user_id (整数) 属性を持つ Token という単純なモデルがあります。

私がこれを行う場合:

Token.where(:user_id => 1) 

レコードを返します。しかし、私がするとき:

Token.delete(:user_id => 1)

それは私にこのエラーを与えます:

ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'id.user_id' in 'where clause': DELETE FROM `tokens` WHERE `id`.`user_id` = 1

何らかの理由で、SQL ステートメントの user_id に id を追加します。なぜそれをしているのですか?where句で問題なく機能します。

4

4 に答える 4

4

deleteIDまたはIDの配列が必要です:

Token.delete(1)
Token.delete([2,3,4])

条件に一致するレコードを削除するには、delete_all代わりに次を使用します。

Token.delete_all(:user_id => 1)

クエリに追加することもできます。

Token.where(:user_id => 1).delete_all

どちらも 1 ですべてのトークンを削除しuser_idます。

于 2013-06-19T09:48:40.433 に答える
2

いくつかのドキュメントを読むのはどうですか?

http://apidock.com/rails/ActiveRecord/Base/delete/class

delete(id) public
于 2013-06-19T09:47:06.150 に答える
0

Token.delete条件ハッシュ ( documentation )ではなく、レコード ID が必要です。

次のようなものが必要です。

Token.where(:user_id => 1).delete_all
于 2013-06-19T09:48:32.780 に答える
0
Token.delete_all("tokens.user_id = ?", 1)
于 2013-06-19T09:48:06.860 に答える