ruby - 创建现场 ActiveRecord::Relation 替代品
问题描述
我们有一种情况,我们发现自己需要使用 ActiveRecord 工具来查询表,但我们不想为这些表创建长期存在的或“全局”类。例如,我们真的需要做类似的事情
from_table(table_name).find_in_batches do |row|
...
到目前为止,我想出的是:
def temporary_model_class_for_table(table_name)
Class.new(ActiveRecord::Base) do
self.table_name = table_name
end
end
这允许我们执行以下操作:
temporary_model_class_for_table('widgets').where(id: 1)
它返回返回的匿名类的实例temporary_model_class_for_table
。但我想知道是否有更清洁的方法可以做到这一点。也许使用 Github 的 SQL gem 之类的东西或直接访问结果集?另一方面,像find_in_batches
/这样的东西find_each
是 ActiveRecord 部分,而不是 Arel 部分,因此可能需要完整的(大量)ActiveRecord API。
有没有更清洁的方法来做到这一点?
解决方案
推荐阅读
- css - 默认行高设置截断 Segoe UI
- objective-c - 如何以编程方式仅调整 NSWIndow 的一侧?
- reactjs - 它无法读取未定义的属性“id”,但我有一些值,不知道为什么它应该是未知的
- livecharts - 如何更改 LineSeries 的动画?实时图表.Wpf
- php - 如何在php中的echo中连接if语句?
- java - 使用流处理异常
- android - RewardedVideoAd 回调侦听器不匹配
- windows - 使用 Windows Media Foundation 枚举时如何获取硬件 ID
- java - orElseThrow 中的 lambda 表达式替代了什么?
- mysql - 使用 continue id(not null) 将现有行克隆到同一个表中