2014-09-12 12 views
5

Sono nel mezzo del mio aggiornamento e sto incontrando alcuni problemi.Uprgrading to Rails 4.1 ottenendo errore: ArgumentError: Chiave sconosciuta:: order

Ecco il mio errore:

/Users/jay/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.1.6/lib/active_support/core_ext/hash/keys.rb:71:in `block in assert_valid_keys': Unknown key: :order. Valid keys are: :class_name, :class, :foreign_key, :validate, :autosave, :table_name, :before_add, :after_add, :before_remove, :after_remove, :extend, :primary_key, :dependent, :as, :through, :source, :source_type, :inverse_of, :counter_cache, :join_table (ArgumentError)

Ha qualcosa a che fare con i miei scopi? Per esempio:

scope :total_views, order('total_views DESC')

o

default_scope { order: :sort_order }

o

scope :recent, order: 'created_at desc'

ho mucchio di ambiti che utilizzano ordine, cosa sta succedendo?

+0

Ho avuto questo problema e penso che abbia radici in act_as_tree. – mcr

risposta

2

ambiti Named in Rails 4 prendono lambda ora invece di hash. All'interno di un lambda utilizzare la nuova sintassi di query e non la vecchia sintassi hash:

default_scope { order(:sort_order) } 

scope :total_views, -> { order('total_views DESC') } 
scope :recent,  -> { order('created_at DESC') } 

Per saperne di più ActiveRecord interrogazione: http://edgeguides.rubyonrails.org/active_record_querying.html#scopes

+0

Grazie! sembra funzionare. Ho provato a guardare attraverso i documenti, ma è cambiata anche la sintassi di questo? 'has_many: commenti, dipendenti:: destroy, ordine:" created_at DESC "' – TuxedoTomson

+1

Sì, anche questo modificato: 'has_many: commenti, dipendenti:: destroy, -> {order ('created DESC')}'. Suggerisco di dare un'occhiata a: http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-3-2-to-rails-4-0-active-record. – spickermann

0

I tuoi ambiti devono essere in forma di lambda.

scope :total_views, -> { order('total_views DESC') }

default_scope -> { order: :sort_order }

scope :recent, -> { order: 'created_at desc' }

+0

Ho esaminato e risolto tutti i miei ambiti e sto ancora ottenendo lo stesso errore. Come posso individuare il problema più direttamente? – TuxedoTomson

0

ho aggiornato alla versione 2.1.0 acts_as_tree, e il problema è andato via.