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