Ruby 自定义sql查询中的activerecord类

Ruby 自定义sql查询中的activerecord类,ruby,activerecord,Ruby,Activerecord,是否可以从自定义sql查询或视图创建activerecord类? 它不需要是可编辑的。 例如: class c select a.*, b.* from a, b where a.code = b.code end 此示例是一个连接,其中两个表中的所有字段都将重新发送,activerecord中的一对一连接仅显示一个表中的字段,其他字段可通过a.bs.fieldname访问。 我希望它们是同一级别的字段,因此在一个类中 因此,a.code、a.name和b.code、b.extra可以作为

是否可以从自定义sql查询或视图创建activerecord类? 它不需要是可编辑的。 例如:

class c
  select a.*, b.* from a, b where a.code = b.code
end
此示例是一个连接,其中两个表中的所有字段都将重新发送,activerecord中的一对一连接仅显示一个表中的字段,其他字段可通过a.bs.fieldname访问。 我希望它们是同一级别的字段,因此在一个类中


因此,a.code、a.name和b.code、b.extra可以作为c.code、c.name、c.extra访问,ActiveRecord将与表一样使用视图。因此,首先为您的物品创建自定义视图

CREATE VIEW some_things AS (select a.*, b.* from a, b where a.code = b.code)
然后创建基于ActiveRecord的类来访问它们(app/models/some_thing.rb)


这种方法的缺点是大多数RDBMS系统不允许对视图进行索引。这意味着您正在进行线性扫描以找到所需的记录。您始终可以在源表上创建索引以提高视图性能。因此,在这种情况下,您可以创建两个索引:
a(code)
b(code)
。最好通过
a(名称)
字段添加索引。
class SomeThing < ActiveRecord::Base
end
p SomeThing.where(code: 'xxx-yyy').order(:name).limit(10).all