我有两个相关的模型,如:
class PartCategory < ActiveRecord::Base
has_many :part_types
scope :engine, where(:name => 'Engine')
end
class PartType < ActiveRecord::Base
belongs_to :part_category
end
我想在PartType模型中添加一个范围,例如:
scope :engine_parts, lambda { joins(:part_category).engine }
但是当我尝试时,我收到以下错误:
NoMethodError:未定义的方法`default_scoped?' for ActiveRecord :: Base:Class
我没有很多关于范围的经验,所以我可能在这里缺少一些基本的东西。有人可以告诉我它是什么。
答案 0 :(得分:46)
试试这个:
scope :engine_parts, lambda { joins(:part_category).merge(PartCategory.engine) }
基本上,joins(:part_category)
的结果是两个模型的连接,因此您无法直接在其上调用.engine
,您需要以这种方式组合范围。