如何在ruby ActiveRecord中销毁没有ID列的记录?
我有一个没有ID列的表。 当我尝试使用ActiveRecord从中删除时,生成的SQL是DELETE FROM table_name WHERE ID=NULL
,这显然不起作用。 有没有办法使用ActiveRecord从表中删除,或者至少使用占位符运行原始SQL删除查询(因此它不容易受到SQL注入)?
您是否尝试过使用ActiveRecord的delete_all方法? 这是我的沙箱中的摘录:
>> customer = Customer.new(:login => 'foo') => #, 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')
查看文档
ActiveRecord::Base.connection.execute('DELETE FROM table_name WHERE ...')
我认为你需要为ActiveRecord提供一个唯一的id列才能正常运行,但我并不是100%肯定。
- 在IRB上需要ActiveRecord – Ruby(NO Rails)
- Rails ActiveRecord与has_many关联相交查询
- ActiveRecord :: StatementInvalid:ArgumentError:负字符串大小(或大小太大):SELECT * FROM
- 如何防止ActiveRecord写入数据库?
- schema.rb索引与单个迁移索引不同
- 如何确保不通过activerecords将重复的行添加到我的数据库表中?
- 迁移时需要使用add_index来获取belongs_to / has_many关系吗? (Rails 3.2,Active Record)
- 如何使用:inverse_of与多个关联?
- 在ActiveRecord中断开