如何使用具有默认排序的依赖destroy子目录销毁ActiveModel实例?
在Rails 4.0中,我有2个ActiveRecord类:
class Sequence < ActiveRecord::Base has_many :steps, dependent: :destroy end
和
class Steps { order('order ASC') } end
当我调用mySequence.destroy
我收到此错误:
PG :: SyntaxError:错误:“order”或其附近的语法错误第1行:…步骤“WHERE”步骤“。”sequence_id“= $ 1 ORDER BY order ASC ^:SELECT”steps“。* FROM”steps“WHERE “steps”。“sequence_id”= $ 1订购ASC
当我删除默认范围时,错误消失了,但我显然必须在我的代码中按顺序排序。 我确实尝试像这样定义关联,并省略default_scope语句:
class Sequence < ActiveRecord::Base has_many :steps, dependent: :destroy, order: 'order ASC' end
但它抛出了同样的错误。
还有其他人有这个问题吗? 这是Rails中的错误吗? 我想在孩子们的destroy sql语句中不需要排序。
我也在rails gitHub问题页面上发布了这个问题。 gitHub用户tanraya提出了以下优雅的解决方案。
default_scope -> { order order: :asc }
感谢来自这里,tanraya和荣誉!