我正处于升级过程中,遇到了一些问题。
这是我的错误:
/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':未知密钥::订单。有效密钥是: :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)
是否与我的示波器有关?例如:
scope :total_views, order('total_views DESC')
或
default_scope { order: :sort_order }
或
scope :recent, order: 'created_at desc'
我有一堆使用顺序的范围,发生了什么?
答案 0 :(得分:2)
Rails 4中的命名范围现在使用lambdas而不是哈希。在lambda中使用新的查询语法而不是旧的哈希语法:
default_scope { order(:sort_order) }
scope :total_views, -> { order('total_views DESC') }
scope :recent, -> { order('created_at DESC') }
了解有关ActiveRecord查询的更多信息:http://edgeguides.rubyonrails.org/active_record_querying.html#scopes
答案 1 :(得分:0)
您的范围必须采用lambda的形式。
scope :total_views, -> { order('total_views DESC') }
default_scope -> { order: :sort_order }
scope :recent, -> { order: 'created_at desc' }
答案 2 :(得分:0)
我将acts_as_tree升级到版本2.1.0,问题就消失了。