创建现场 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。

有没有更简洁的方法来做到这一点?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)