如何 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
有没有办法在 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