缩影可能有很多内容。
class Miniature < ActiveRecord::Base
has_many :contents, foreign_key: "setmini_id", dependent: :destroy
has_many :minisets, :through => :contents, source: :miniset
has_many :reverse_contents, foreign_key: "miniset_id", class_name: "Content", dependent: :destroy
has_many :setminis, :through => :reverse_contents, source: :set mini
在微缩的节目视图中,我目前列出了它的内容。我想要做的是向我的内容模型添加一个默认的排序范围,以便按名称排序。
class Content < ActiveRecord::Base
default_scope { order('name ASC') }
belongs_to :miniset, class_name: "Miniature"
belongs_to :setmini, class_name: "Miniature"
我在这里的尝试失败并抱怨&#34;没有这样的专栏名称:&#34;。
通过正常的has_many_through关系,这可行,但我猜测是因为我在两个方向上使用连接表并声明class_name:&#34; Miniature&#34;这在这里不起作用。
有没有办法让这个列表按名称默认排序?
我已经尝试过&#34; content.name&#34;和&#34; setmini.name&#34;无济于事。
答案 0 :(得分:0)
您需要在订单子句中使用数据库表的名称(而不是模型或关联名称)。如果您正在关注Rails&#39;命名约定,这将是:
order('contents.name ASC')
答案 1 :(得分:0)
在查看类似问题的其他答案后,我最终得到了以下内容:
default_scope join(:setmini).order(&#39; minatures.name ASC&#39;)