如何销毁/删除没有id列的Rails Active Record?

时间:2019-04-09 07:25:22

标签: ruby-on-rails activerecord destroy

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

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

我知道通常不建议在Rails中创建没有id列的表。虽然我想尽可能地删除此特定表,但如果事实证明没有任何解决方法,我还是愿意在此栏中提出。预先感谢。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

如果要删除列,可以使用

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