2014-03-30 27 views
8

我跑4.1.0.rc2和我得到了引發ArgumentError block in assert_valid_keys': Unknown key: :order軌道,當我嘗試做:塊assert_valid_keys':未知鍵:順序(引發ArgumentError)

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

我想在我的連接模型上放置了一個順序約束,並且據我所知,這對Rails 3.2起作用,所以我無法弄清楚發生了什麼。有任何想法嗎?

回答

20

試試這個:

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

更新,按OP的評論(重新排序指令):

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

太棒了,只要我按照命令'has_many:workout_exercises, - > {order「exercise_order desc」},dependent::destroy'就可以工作。你能解釋一下使用'order:'和' - > {order「」}'的區別嗎? – Arel

+2

沒有區別,但在後面的rails版本中,不能在關聯中的作用域塊外使用activerecord方法。檢查此網址和示例http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_many –

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') 
相關問題