Sto usando Rails 4.2.3 e 2.2.1 rubinofind_by all'interno di un campo di applicazione è sparare 2 interroga
ho scritto un ambito in ruoli modello come segue:
app/modelli/role.rb
scope :default, -> { find_by(default: true) }
Ora quando faccio funzionare
> Role.default
#this is the output I got.
Role Load (0.1ms) SELECT `roles`.* FROM `roles` WHERE `roles`.`default` = 1 LIMIT 1
Role Load (0.1ms) SELECT `roles`.* FROM `roles`
=> []
Come si può vedere questo spara 2 query e restituisce risultato sbagliato.
ho provato con metodo di classe al posto del campo di applicazione
def self.default
self.find_by(default: true)
end
Ora, quando corro
Role.default
#this is the output I got
Role Load (0.2ms) SELECT `roles`.* FROM `roles` WHERE `roles`.`default` = 1 LIMIT 1
=> nil
Con metodo di classe find_by funziona correttamente.
Non riesco a capire cosa sto sbagliando qui. Qualsiasi aiuto sarebbe apprezzato. Grazie in anticipo.