我正在使用ActiveRecord 4.2.4来处理数据库。
一些背景知识:
我最近遇到过这个问题,生成的输出文件显示:
ROLE | UPDATED_DATE
Teacher | 2016-10-26 09:54:06 UTC
但是在UPDATED_DATE,我不希望'2016-10-26 09:54:06 UTC ',我希望只有'2016-10-26'显示在文件中,如下所示:
ROLE | UPDATED_DATE
Teacher | 2016-10-26
UPDATED_DATE列在表格中具有DATE类型。我执行查询而不将其转换为任何内容。我没有使用Ruby对象/模型来映射数据库表,而只是简单地运行SQL并将结果打印到文件中。以下是我在代码中的内容:
def initialize
ActiveRecord::Base.time_zone_aware_attributes = false
db_config = DBConfig.get_config_file(DB_CONFIG)
ActiveRecord::Base.establish_connection(
:adapter => db_config['adapter'],
:username => db_config['username'],
:password => db_config['password'],
:database => db_config['database']
)
@connection = ActiveRecord::Base.connection
end
def extract_file
delimiter = '|'
output_file = 'extract.txt'
query = "Select role, UPDATED_DATE from ROLE where USER_ID = 'user1'"
# loop through the result
File.open(output_file, 'w'){|f|
result = @connection.exec_query(query)
result.rows.each do |row|
array << (row.join(delimiter))
if array.length >= 100
f.puts array.join("\n")
array = []
end
end
end
我尝试添加以下行:
ActiveRecord::Timestamp.record_timestamps = false
但是,我收到以下错误:
undefined method `record_timestamps=' for ActiveRecord::Timestamp:Module
根据网站:
http://www.rubydoc.info/gems/activerecord/4.2.4/ActiveRecord/Timestamp
Timestamping can be turned off by setting:
config.active_record.record_timestamps = false
在哪里配置?在config / database.yml文件中?请分享您的解决方案。
答案 0 :(得分:0)
如果您只对上次更新的日期而不是时间感兴趣,那么有两种选择:
updated_at
timestamp
列。而是使用updated_on
date
列,Rails魔法将完成剩下的工作。或timestamp
转换为date
数据类型。一个简单的updated_at.to_date
将完成这项工作。