我有一个名为Token的简单模型,它具有user_id(整数)属性。
如果我这样做:
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语句中将id附加到user_id。它为什么这样做?它适用于where子句。
答案 0 :(得分:3)
delete
需要id或id数组:
Token.delete(1)
Token.delete([2,3,4])
要删除符合条件的记录,请改为使用delete_all
:
Token.delete_all(:user_id => 1)
您还可以将其附加到您的查询中:
Token.where(:user_id => 1).delete_all
两者都使用user_id
1删除所有令牌。
答案 1 :(得分:2)
答案 2 :(得分:0)
Token.delete_all("tokens.user_id = ?", 1)
答案 3 :(得分:0)