ruby-on-rails – Ruby on Rails:使用find_by_sql实例化相关模
显然,包含和选择不能同时在Rails查找查询中使用,并且已经反复标记为wontfix:
http://dev.rubyonrails.org/ticket/7147 http://dev.rubyonrails.org/ticket/5371 这让我非常不方便,因为我想要使用的时间与我想要使用的时间完全相同 – 当每一点性能都很重要时. 有没有办法解决这个问题,并使用find_by_sql或任何其他方法手动生成一个include-with-select组合?麻烦的是,我不知道有什么方法来模拟include的功能,它在内存中实例化模型来保存包含的相关模型,这样我就可以输入model1.associated_models并让它不再次访问数据库. 解决方法
您是否考虑过为数据库视图创建模型?例如:
>使用复杂的SQL查询创建数据库视图: CREATE VIEW production_plan_items AS SELECT * FROM [...] INNER JOIN [...]; >为此视图创建模型: # app/view_model.rb class ViewModel < ActiveRecord::Base self.abstract_class = true def readonly? true end def before_destroy raise ActiveRecord::ReadOnlyRecord end end # app/models/logical/production_plan_item.rb module Logical class ProductionPlanItem < ::ViewModel end end >一如既往地使用,但请记住这些记录只读! Logical::ProductionPlanItem.where( ... ) 如果将来性能仍然存在问题,您可以使用触发器和存储过程轻松地将数据库视图转换为物化视图.这将为您的应用程序提供极大的速度提升,您甚至不必更改一行Rails代码. 强烈推荐使用Enterprise Rails阅读: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |