在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语句中不需要排序。
答案 0 :(得分:1)
我也在rails gitHub问题页面上发布了这个问题。 gitHub user tanraya提出了以下优雅的解决方案。
default_scope -> { order order: :asc }
感谢来自这里,tanraya和kudos!