【问题标题】:block in assert_valid_keys': Unknown key: :order (ArgumentError)assert_valid_keys 中的块:未知键::order(ArgumentError)
【发布时间】:2014-03-30 21:26:44
【问题描述】:

我正在运行 rails 4.1.0.rc2,当我尝试这样做时,我得到了 ArgumentError block in assert_valid_keys': Unknown key: :order

has_many :workout_exercises, dependent: :destroy, order: "exercise_order DESC"`

我想在我的连接模型上设置一个顺序约束,据我所知,这适用于 Rails 3.2,所以我不知道发生了什么。有任何想法吗?

【问题讨论】:

    标签: ruby-on-rails activerecord ruby-on-rails-4


    【解决方案1】:

    试试这个:

    has_many :workout_exercises, dependent: :destroy,-> { order "exercise_order desc" }
    

    更新,根据 OP 的评论(重新排序指令):

    has_many :workout_exercises,-> { order "exercise_order desc" }, dependent: :destroy
    

    【讨论】:

    • 太棒了,只要我下订单has_many :workout_exercises,-> { order "exercise_order desc" }, dependent: :destroy就可以了。你能解释一下使用order:' and -> {order ""}`的区别吗?
    • 没有区别,但在 Rails 的后期版本中,您不能在关联的范围块之外使用 activerecord 方法。检查此网址和示例apidock.com/rails/ActiveRecord/Associations/ClassMethods/…
    【解决方案2】:

    再举一个例子,可以帮助找到这篇文章的人。

    # Rails 3 Syntax (below)
    has_one :ca, :class_name => 'C::A',
            :foreign_key => 'person_id',
            :conditions => ['appl_id = ? AND status = ?', 4, 'active']
    # Rails 4 Syntax (below) which replaces Rails 3 Syntax (above)
    has_one(:ca, -> {where app_id: '4', status: 'active'}, class_name: 'C::A', foreign_key: 'person_id')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-02
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      相关资源
      最近更新 更多