首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ruby ActiveRecord中销毁没有ID列的记录?

如何在ruby ActiveRecord中销毁没有ID列的记录?
EN

Stack Overflow用户
提问于 2010-06-05 06:32:39
回答 2查看 6.4K关注 0票数 21

我有一个没有ID列的表。当我尝试使用ActiveRecord从其中删除时,生成的SQL是DELETE FROM table_name WHERE ID=NULL,这显然不起作用。有没有什么方法可以使用ActiveRecord从表中删除,或者至少运行一个带有占位符的原始SQL delete查询(这样它就不会受到SQL注入的攻击)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-05 10:00:57

你有没有试过使用ActiveRecord的delete_all方法?以下是我的沙箱中的一段摘录:

代码语言:javascript
复制
>> customer = Customer.new(:login => 'foo')
=> #<Customer id: nil, status: 0, name: nil, login: "foo", password: nil, salt: nil, api_key: nil, address: nil, town: nil, state: nil, country: "USA", zipcode: nil, balance: #<BigDecimal:1032669b0,'0.0',9(18)>, discount: 0, last_four_cc: nil, auto_renew: false, contact_name: nil, contact_email: nil, domain: "anon.limelock.com", created_at: nil, updated_at: nil>
>> customer.save
=> true
>> Customer.all.count
=> 4
>> Customer.delete_all(:login => 'foo')
=> 1
>> Customer.all.count
=> 3

生成的SQL为DELETE FROM `customers` WHERE (`customers`.`login` = 'foo')

查看documentation

票数 26
EN

Stack Overflow用户

发布于 2010-06-05 06:39:47

代码语言:javascript
复制
ActiveRecord::Base.connection.execute('DELETE FROM table_name WHERE ...')

我认为ActiveRecord需要有一个唯一的id列才能正确运行,但我不能百分之百确定。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2978219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档