Я пытаюсь обновить запись в sqlserver
с использованием жемчуга activerecord-sqlserver-adapter
, когда я пытаюсь сохранить запись в консоли, она показывает, как если бы ее обновил, но когда я не проверял базу данных ничего была обновлена.Rails ActiveRecord не сохраняет обновления - но не вызывает никаких ошибок
class Customer < ActiveRecord::Base
before_validation :make_CustomerID
self.primary_key = :CustomerID
self.table_name = "CoCustomers"
def make_CustomerID
self.CustomerID = Customer.all.last.CustomerID + 1
end
end
в рельсах консоли
c = Customer.find(1)
c.CustomerName
=> "ABC Co."
c.CustomerName = "XYZ Co."
=> "XYZ Co."
c.save
SQL (42.8ms) BEGIN TRANSACTION
Customer Load (49.9ms) EXEC sp_executesql N'SELECT [CoCustomers].* FROM [CoCustomers]'
(45.3ms) EXEC sp_executesql N'UPDATE [CoCustomers] SET [CustomerName] = N''XYZ Co.'', [LastUpdate] = ''2014-01-10T16:37:52.488'' WHERE [CoCustomers].[CustomerID] = 3; SELECT @@ROWCOUNT AS AffectedRows'
SQL (45.6ms) COMMIT TRANSACTION
=> true
c.CustomerName
=> "XYZ Co."
c = Customerfind(1)
c.CustomerName
=> "ABC Co."
в шоу, как будто ее обновление, но ничего на самом деле происходит, как вы можете видеть.
дополнительно я поставил мой application.rb
файл
config.active_record.whitelist_attributes = false
Я использую rails 3.2.16
с tiny_tds
и activerecord-sqlserver-adapter 3.2.12
любая помощь будет здорово, спасибо
'Customerfind (1)' vs 'Customer.find (1)'? Это опечатка только в SO? – AbM
Почему этот оператор 'update' выполняется на' CustomerID = 3'? – vee
нет, он ищет неверный идентификатор – Moshe