rails删除未知列

时间:2013-06-19 09:43:46

标签: ruby-on-rails ruby

我有一个名为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子句。

4 个答案:

答案 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)

阅读一些文档怎么样?

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

delete(id) public

答案 2 :(得分:0)

Token.delete_all("tokens.user_id = ?", 1)

答案 3 :(得分:0)

Token.delete需要记录ID,而不是条件哈希(documentation)。

你想要这样的东西:

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