ruby-on-rails-3 – 为什么Rails 3与Mysql2 Gem ActiveRecord ::
发布时间:2020-12-16 19:28:32 所属栏目:百科 来源:网络整理
导读:我正在将应用程序升级到Rails 3.我已经决定使用 mysql2 gem.应用程序中有一些旧版代码可以进行如下调用: results = ActiveRecord::Base.connection.execute(sql) 在2.3.x版本中,它使用 results.each_hash do |row|... 但是使用gem mysql2,结果是类型Mysql2
我正在将应用程序升级到Rails 3.我已经决定使用
mysql2 gem.应用程序中有一些旧版代码可以进行如下调用:
results = ActiveRecord::Base.connection.execute(sql) 在2.3.x版本中,它使用 results.each_hash do |row| ... 但是使用gem mysql2,结果是类型Mysql2 :: Result,它只有一个方法.检查文档,他们指定结果应该是字段名称上的哈希键.大! 但实际上它是一个Array,而不是一个哈希. 当我使用rails控制台并实例化我自己的Mysql2 :: Client并在那里运行查询时,结果是一个哈希,这是我想要的. 在rails应用程序中,我认为最好使用ActiveRecord :: Base.connection,因为它已经使用database.yml中的选项实例化了. 注意,不幸的是,结果并不映射到模型,所以我不能使用它. 现在我做的是,例如: result = ActiveRecord::Base.connection.execute(sql) field_index = result.fields.index("field") result.each do |row| row[field_index] end 这是丑陋的罪恶. 有没有人我可以得到它来返回哈希而不是数组? 解决方法
如果只想重新使用database.yml配置,可以这样做:
config = ActiveRecord::Base.configurations[RAILS_ENV].symbolize_keys conn = Mysql2::Client.new(config) conn.query("select * from users").each do |user| # user should be a hash end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |