2

我正在使用 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 查询来了解这一点。据推测,有一个最后检查的时间戳来理解这一点。就说提供了,那怎么办呢?

4

1 回答 1

0

默认情况下,Rails(实际上是 ActiveRecord)模型中的 created_at 和 updated_at 列会自动添加到从script/generate model. 此外,当 ActiveRecord 将它们的存在删除时,它们会自动维护它们。即使那样,如果您绕过 AR 并直接进入数据库,则可能不会为您维护这些列。

恐怕 Access 不会自动为您做任何事情。虽然我确信在某种程度上复制该功能是可能的,但它可能不是微不足道的。通常,您要么需要使用触发器(未在 Access 中实现)或在更新表的代码(这是 ActiveRecord 所做的)中处理更改。

于 2010-02-08T23:38:36.167 回答