Ruby win32ole MS Access:如何查找自上次导出以来更新的所有记录?

时间:2010-02-08 23:27:26

标签: ruby ms-access activerecord win32ole

我正在使用win32ole模块/库来访问Access数据库。但我无法在Rails中找到数据库中任何表中的created_at或updated_at列。我想知道如何找到更新的行,然后呢?

所以我有

require 'win32ole'
connection = WIN32OLE.new('ADODB.Conneciton')
conneciton.Open('Provider = Microsoft.ACE.OlEDB.12.0; Data Source = c:\data.accdb')

recordset = WIN32OLE.new('ADODB.Recordset')
recordset.Open(some_sql, connection)

fields = []
recordset.Fields.each do |field|
 fields << field.name
end

data = recordset.GetRows.transpose

so data = [
['john', 'doe', 'author'],
['mick', 'jagger', 'singer'],
['woody', 'allen', 'direct'],
['pablo', 'picasso', 'painter'],
['homer', 'simpson', 'loser']
]

fields= ['first', 'last', 'occupation']

但如果有人将Homer的工作改为'Winner',我会用什么样的SQL查询来了解这一点。据推测,有一个最后检查的时间戳来理解这一点。我们只是说它已经提供了,那么它是如何进行的呢?

1 个答案:

答案 0 :(得分:0)

默认情况下,Rails(实际上是ActiveRecord)模型中的created_at和updated_at列会自动添加到从script/generate model生成的迁移脚本中。此外,当ActiveRecord检测到它们的存在时,它们会自动维护。即使这样,如果您绕过AR并直接进入数据库,也可能无法为您维护这些列。

访问不会自动为你做任何这些,我担心。虽然我确信它可能在某种程度上复制功能,但它可能不是微不足道的。通常,您需要使用触发器(未在Access中实现)或更新表的代码(这是ActiveRecord所执行的操作)来处理更改。