как я могу уничтожить запись без столбца ID в рубиновом ActiveRecord?

У меня есть таблица без столбца ID. Когда я пытаюсь удалить из него использование ActiveRecord, сгенерированный SQL DELETE FROM table_name WHERE ID=NULL, который, очевидно, не работает. Там какой-либо путь состоит в том, чтобы удалить из использования таблицы ActiveRecord или по крайней мере выполнить необработанный запрос на удаление SQL с заполнителями (таким образом, это не уязвимо для Внедрения SQL)?

20
задан Johnny 4 June 2010 в 22:32
поделиться

2 ответа

Вы пробовали использовать метод delete_all в ActiveRecord? Вот отрывок из моей песочницы:

>> 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-запрос УДАЛИТЬ ИЗ `customers` WHERE (` customers`.`login` = 'foo')

Ознакомьтесь с документацией

25
ответ дан 30 November 2019 в 00:13
поделиться
ActiveRecord::Base.connection.execute('DELETE FROM table_name WHERE ...')

Я думаю, что для правильной работы ActiveRecord вам нужен уникальный столбец идентификатора, но я не уверен на 100%.

10
ответ дан 30 November 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: