【问题标题】:Using a scope from a related model in another scope在另一个范围内使用来自相关模型的范围
【发布时间】:2012-03-09 21:06:37
【问题描述】:

我有两个相关的模型,例如:

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?'对于 ActiveRecord::Base:Class

我在范围方面没有太多经验,所以我可能在这里遗漏了一些基本的东西。有人可以告诉我它是什么。

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    试试这个:

    scope :engine_parts, lambda { joins(:part_category).merge(PartCategory.engine) } 
    

    joins(:part_category)的结果基本上是两个模型的join,所以不能直接调用.engine,需要这样组合作用域。

    Here for more

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2015-09-05
    • 1970-01-01
    相关资源
    最近更新 更多