Как я могу уничтожить запись без идентификатора столбца в ruby ​​ActiveRecord? - PullRequest
20 голосов
/ 05 июня 2010

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

Ответы [ 2 ]

25 голосов
/ 05 июня 2010

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

>> 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 равен DELETE FROM `customers` WHERE (`customers`.`login` = 'foo')

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

10 голосов
/ 05 июня 2010
ActiveRecord::Base.connection.execute('DELETE FROM table_name WHERE ...')

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...