【发布时间】:2014-07-30 10:12:53
【问题描述】:
我的微型模型具有以下关联:
class Miniature < ActiveRecord::Base
has_many :minilines, dependent: :destroy
has_many :lines, :through => :mini lines
这很好用,但我想让 Minilines 按名称的字母顺序排序,所以我添加了这个:
class Miniline < ActiveRecord::Base
default_scope { order('name ASC') }
belongs_to :miniature
belongs_to :line
我认为这可以正常工作,但是当您删除 Miniature 时会出现错误:
ActiveRecord::StatementInvalid (SQLite3::SQLException: 没有这样的列: 名称:SELECT "minilines".* FROM "minilines" WHERE “minilines”。“miniature_id”=?按名称 ASC 订购):
app/controllers/miniatures_controller.rb:205:in `destroy'
删除 default_scope 行允许您删除 Miniature 并具有正确的行为。
我不清楚为什么 default_scope 会破坏这种行为或如何纠正它。
我的问题似乎与this 重复,但那里勾选的解决方案并没有为我解决。
【问题讨论】:
-
有点。不同之处在于我没有尝试 delete_all 或 update_all ,因此 Q 上的答案似乎不适用于我的。我在那里看不到可以解决我的问题的答案。
-
很奇怪。你确定有
minilines.name列吗?Miniline.all在控制台返回什么? -
啊哈!不,没有迷你 legions.name 列,它是关联 Line 模型中的 name 列。排序适用于关联,但我想它会以某种方式绊倒破坏。
标签: ruby-on-rails