tables raw rails query not multiple left joins inner active ruby-on-rails ruby-on-rails-3 activerecord named-scope

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