使用RoR 3.0.7。 (红宝石1.9.2)
我有一本表格书(模型书),其中包含以下字段:
book_id - int(不是主键)
cover_pic - varchar
年 -
我需要删除DB中的*行,例如books_id = 1。
尝试过:
1)Book.where(:book_id => 1).destroy(nothing)
2)Book.destroy(Book.where(:book_id => 1))(无)
3) Book.where(:book_id => 1).each do | obj |
obj.destroy
端
没什么.. =(
我做错了什么?
THX。
UPD
工作正常delete_all
有趣的信息: undefined method `eq' for nil:NilClass with rails 3 and ruby enterprise on ubuntu hardy
答案 0 :(得分:3)
您可以使用以下两种方法之一:
这将触发所有销毁回调
Book.destroy_all( :book_id => 1 )
这不会
Book.delete_all( :book_id => 1 )
答案 1 :(得分:1)
假设桌面上有一些唯一索引,这很有用:
book = Book.first
Book.delete_all(book.attributes)
如果您在桌面上没有唯一索引,则上面的危险 - 您可能会比预期更多的行。如果是这种情况,请在现有列(或列)上添加唯一索引,或者向表中添加PK。