如何使用具有默认排序的依赖destroy子目录销毁ActiveModel实例?

时间:2013-12-02 21:01:47

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

在Rails 4.0中,我有2个ActiveRecord类:

class Sequence < ActiveRecord::Base

    has_many :steps, dependent: :destroy

end

class Steps < ActiveRecord::Base

    belongs_to :sequence

    default_scope -> { order('order ASC') }

end

当我致电mySequence.destroy时,我收到此错误:

PG :: SyntaxError:错误:“order”或其附近的语法错误第1行:...步骤“WHERE”步骤“。”sequence_id“= $ 1 ORDER BY order ASC ^:SELECT”steps“。* FROM”步骤“WHERE”步骤“。”sequence_id“= $ 1 ORDER BY order ASC

当我删除默认范围时,错误消失了,但我显然必须在我的代码中按顺序排序。 我确实试图像这样定义关联,并省略default_scope语句:

class Sequence < ActiveRecord::Base

    has_many :steps, dependent: :destroy, order: 'order ASC'

end

但它也犯了同样的错误。

有没有其他人有这个问题?这是Rails中的错误吗?我想在孩子们的destroy sql语句中不需要排序。

1 个答案:

答案 0 :(得分:1)

我也在rails gitHub问题页面上发布了这个问题。 gitHub user tanraya提出了以下优雅的解决方案。

default_scope -> { order order: :asc }

感谢来自这里,tanraya和kudos!