ruby-on-rails - not - raw query ruby on rails
método indefinido `default_scoped? '' al acceder al alcance (2)
Recibí este error porque uno de mis ámbitos estaba volviendo a mí self
, que supuse que era el objeto de relación (no funcionó); regresar nil
cambio logró el resultado esperado. p.ej:
scope :except_ids, -> ids do
if ids.present?
ids = ids.split('','') if ids.respond_to?(:split)
where(''id not in (?)'', ids)
end
end
si ids.present? devuelve falso, la condición devuelve nulo y el alcance no tiene ningún efecto, pero aún puede encadenarse.
Recibo este error al acceder a los ámbitos.
Aquí está el modelo AR
class StatisticVariable < ActiveRecord::Base
attr_accessible :code, :name
has_many :statistic_values
scope :logins, where(code: ''logins'').first
scope :unique_logins, where(code: ''unique_logins'').first
scope :registrations, where(code: ''registrations'').first
end
y cuando intento con StatisticVariable.logins
o cualquier otro ámbito, me da:
NoMethodError: undefined method `default_scoped?''
Si configuro el alcance como método de clase, funciona perfectamente.
def self.registrations
where(code: ''registrations'').first
end
Por favor, guíame para comprender y solucionar este problema.
Sus llamados scopes
no son alcances: no son encadenables.
Supongo que Rails intenta agregar un potencial default_scope
a su resultado que conduce a la falla.
Haz algo como:
scope :logins, where(code: ''logins'')
scope :unique_logins, where(code: ''unique_logins'')
scope :registrations, where(code: ''registrations'')
def self.login
logins.first
end