我有三种型号:
活动、阵容、艺术家
class Event
has_many :lineups
has_many :artists, -> { uniq }, through: :lineups
end
class Artist
has_many :events, through: :lineups
has_many :lineups
end
class Lineup
belongs_to :event
belongs_to :artist
end
列队有
artist_order
整数列。默认情况下,如何使
Event.last.artists
按列表的artist_order
列排序? 最佳答案
您可以将default_scope
用于Lineup
模型:
class Lineup
default_scope { order(:artist_order) } # or order('artist_order DESC')
end
这样,每当调用列队集合时,它都按
artist_order
列排序。另一种方法是直接在
has_many
关系上指定订单:has_many :lineups, -> { order(:artist_order) }
后者可能是更好的选择,因为默认范围有时considered to be a bad idea。
关于ruby-on-rails - 如何在联接模型中按列对关联的模型进行排序(:through),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34991239/