如何 destroy/delete 没有 id 列的 Rails Active Record?

How to destroy/delete a Rails Active Record without an id column?

有没有办法在 table 没有 id 列的情况下销毁 Rails Active Record 条目? 我知道有几种方法可以使用 ids 销毁 Active Records,例如:

User.destroy(1)
User.first.destroy

但是,如果没有 id,我似乎无法找到这样做的方法。我检查了 this link 中的建议,但无济于事。 理想情况下,我的想法是这样的:

User.where(name: "Dummy").destroy
# Returns this:
# ArgumentError (wrong number of arguments (given 0, expected 1))

我知道通常不鼓励在没有 id 列的情况下在 Rails 中创建 table。如果可能的话,我想为这个特定的 table 删除它,但如果事实证明没有解决方法,我愿意制作该专栏。提前致谢。

User.where(name: 'Dummy').destroy 不起作用的原因是 User.where(name: 'Dummy') 是一种关系,而不是单个记录。例如,如果你想销毁所有 name 等于 'Dummy' 的记录,你可以使用 destroy_all:

User.where(name: 'Dummy').destroy_all

如果要删除列,可以使用

User.find_by_name(name: "dummy").destroy