ruby-on-rails – 渴望加载嵌套关联和范围
发布时间:2020-12-17 03:00:31 所属栏目:百科 来源:网络整理
导读:我是初学者,很难解释我的问题: 我的模特: class Skill has_many :categories has_many :positions,:through = :categoriesendclass Category belongs_to :skill has_many :positions endclass Position belongs_to :category has_one :skill,:through = :c
我是初学者,很难解释我的问题:
我的模特: class Skill has_many :categories has_many :positions,:through => :categories end class Category belongs_to :skill has_many :positions end class Position belongs_to :category has_one :skill,:through => :category end 我可以成功地加载所有内容,如下所示: @skills = Skill.includes(:positions) 但有时我想在职位上应用范围: class Position ... scope :active,where(:hidden => false) end 我希望我能做到: @skills = Skill.includes(:positions.active) 相反,我在视图中应用范围,但是急切加载不再起作用: <%= skill.positions.acitve ... %> 是否可以同时拥有热切的装载和范围? 解决方法
您可以使用其他关联:
class Skill has_many :categories has_many :positions,:through => :categories has_many :active_positions,:through => :categories end class Category belongs_to :skill has_many :positions has_many :active_positions,:class_name => "Position",:conditions => {:hidden => false} end class Position belongs_to :category has_one :skill,:through => :category end 然后 @skills = Skill.includes(:active_positions) 但是你会得到两个联想.如果您曾使用技能.位置,则将从数据库加载所有技能的位置.您应该只使用skill.active_positions. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |