在rubyActiveRecord中,如果没有ID列,我如何销毁记录?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

我有一张没有ID列的表。当我尝试使用ActiveRecord从其中删除时,生成的SQL是DELETE FROM table_name WHERE ID=NULL显然不起作用。有没有任何方法可以使用ActiveRecord从表中删除?

提问于
用户回答回答于

试过使用ActiveRecord的DELETE_all吗?

>> 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')

用户回答回答于
ActiveRecord::Base.connection.execute('DELETE FROM table_name WHERE ...')

我认为需要一个惟一的id列,ActiveRecord才能正常工作.

扫码关注云+社区