近日筆者從Rails 3中遷移到導軌4,在這個過程之前,我注意到,分揀協會不會對Rails 4.工作以下是樣本模型:排序爲協會節能使用回調
#box.rb
class Box < ActiveRecord::Base
has_many :items
accepts_nested_attributes_for :items, :allow_destroy => true
before_validate
items.sort! { <some condition> }
end
end
#item.rb
class Item < ActiveRecord::Base
belongs_to :box
end
在Rails 3,sort!
關聯方法修改了items
散列,但在Rails 4中,它返回一個新的排序實例,但不修改實際實例。有沒有辦法解決這個問題?
更重要的是,你爲什麼要這樣做? –
我從保存的客戶端中獲取需要排序的項目列表。我認爲在保存之前使用參數進行保存之前,應該有一種排序關聯的方法。除此之外,我需要驗證排序的關聯。後者是可能的,而不需要修改聯繫,但前者不是。 –
在保存前「排序」關聯沒有內在價值。項目保存到數據庫的順序不應該是業務邏輯的一部分,因爲它在大多數DBMS中不可靠。集合的檢索時應該處理集合的排序。 –