update rails query left includes create active ruby-on-rails activerecord

ruby on rails - rails - Usar un alcance de un modelo relacionado en otro ámbito



rails sql query (1)

Tengo dos modelos relacionados como este:

class PartCategory < ActiveRecord::Base has_many :part_types scope :engine, where(:name => ''Engine'') end class PartType < ActiveRecord::Base belongs_to :part_category end

Me gustaría agregar un alcance al modelo PartType, como:

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

Pero cuando intento eso, obtengo el siguiente error:

NoMethodError: método indefinido `default_scoped? '' para ActiveRecord :: Base: Class

No tengo mucha experiencia con el alcance, así que probablemente me esté perdiendo algo fundamental aquí. ¿Puede alguien decirme qué es?


Prueba esto:

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

Básicamente, el resultado de joins(:part_category) es la unión de dos modelos, por lo que no puede invocar .engine directamente, necesita componer ámbitos de esta manera.

Mira aquí para más