查询Rails 3.1中重构后的ActiveRecord关联方法及标记代码对应项
Rails 2.3.14 升级至 3.1 关联类方法重构适配指南
被重构方法的对应位置
- 原
ActiveRecord::Associations::HasManyThroughAssociation#construct_joins
Rails 3.1 中该独立方法已被移除,原有逻辑整合到ActiveRecord::Associations::HasManyThroughAssociation#construct_scope内部,作为关联查询 scope 构造的子环节实现,join 条件直接通过链式调用拼接至查询对象。 - 原
ActiveRecord::Associations::ClassMethods::JoinDependency::JoinAssociation#association_join
Rails 3.1 中JoinDependency的命名空间已从ClassMethods模块下移出,对应方法重构为ActiveRecord::Associations::JoinDependency::JoinAssociation#build_join,原association_join的 join 语句生成逻辑已完全迁移至该方法内。
##ORIGINALY:标记代码的等价实现规则
你可对照以下通用规则完成6处标记代码的替换:
- 原方法内直接修改
@joins实例变量的逻辑,可替换为对查询 scope 调用joins方法做链式拼接 - 原手动拼接字符串形式 join 条件的代码,可改为构造 Arel 节点后传入
joins或where方法 - 涉及
AssociationReflection类的调用逻辑无需改动,Rails 3.1 对该类的兼容度较高
内容的提问来源于stack exchange,提问作者thefonso
相关产品推荐
相关产品推荐

