Ruby 自定义sql查询中的activerecord类
是否可以从自定义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可以作为
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