【发布时间】:2013-12-02 21:01:46
【问题描述】:
在 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: ERROR: 在“order”处或附近出现语法错误 LINE 1: ...steps" WHERE "steps"."sequence_id" = $1 ORDER BY order ASC ^ : SELECT "steps".* FROM " steps" WHERE "steps"."sequence_id" = $1 ORDER BY order ASC
当我删除默认范围时,错误消失了,但我显然必须在我的代码中按顺序排列步骤。 我确实尝试像这样定义关联,并省略了 default_scope 语句:
class Sequence < ActiveRecord::Base
has_many :steps, dependent: :destroy, order: 'order ASC'
end
但它抛出了同样的错误。
还有其他人有这个问题吗?这是Rails中的错误吗?我想在孩子的销毁 sql 语句中不需要排序。
【问题讨论】:
-
你能用你在
steps类中的上述代码试试mySequence.unscoped.destroy吗 -
嗯,为#<0x007f086812c0b0>0x007f086812c0b0>
标签: ruby-on-rails activerecord ruby-on-rails-4 associations