2014-09-12 11 views
5

Tôi đang ở giữa quá trình nâng cấp và đang gặp phải một số sự cố.Uprgrading to Rails 4.1 nhận lỗi: ArgumentError: Khóa không xác định:: order

Đây là lỗi của tôi:

/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)

Liệu nó có cái gì để làm với phạm vi của tôi không? Ví dụ:

scope :total_views, order('total_views DESC')

hoặc

default_scope { order: :sort_order }

hoặc

scope :recent, order: 'created_at desc'

tôi có loạt các phạm vi sử dụng trật tự, những gì đang xảy ra?

+0

Tôi gặp sự cố này và tôi nghĩ rằng nó có nguồn gốc từ act_as_tree. – mcr

Trả lời

2

phạm vi được đặt tên trong Rails 4 mất lambdas tại thay vì băm. Trong vòng một lambda sử dụng cú pháp truy vấn mới và không phải là cú pháp băm cũ:

default_scope { order(:sort_order) } 

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

Đọc thêm về ActiveRecord truy vấn: http://edgeguides.rubyonrails.org/active_record_querying.html#scopes

+0

Cảm ơn! dường như đang hoạt động. Tôi đã thử tìm kiếm các tài liệu trough, nhưng cú pháp cho điều này cũng thay đổi? 'has_many: comments, depend:: destroy, order:" created_at DESC "' – TuxedoTomson

+1

Có thay đổi cũng: 'has_many: comments, depend:: destroy, -> {order ('create DESC')}'. Tôi khuyên bạn nên xem: http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-3-2-to-rails-4-0-active-record. – spickermann

0

Phạm vi của bạn cần phải ở dạng lambda.

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

default_scope -> { order: :sort_order }

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

+0

Tôi đã đi qua và cố định tất cả các phạm vi của tôi, và vẫn nhận được cùng một lỗi. Làm thế nào tôi có thể xác định vấn đề trực tiếp hơn? – TuxedoTomson

0

tôi nâng cấp lên phiên bản 2.1.0 acts_as_tree, và vấn đề đi đi.

Các vấn đề liên quan