我有模型媽媽,爸爸和關注這是一個多態關聯。我試圖把媽媽和爸爸,用戶按照字母順序排列,因爲那裏的name
屬性在哪裏混合在一起。這是我想要的和我的代碼到目前爲止。如何通過同一個屬性爲多個父關聯進行排序?
實例用戶跟着爸爸媽媽列表
Adam # Dad
Ashley # Mom
Brenda # Mom
Brian # Dad
模式
class Mom
has_many :follows, as: :followable
# columns: name
end
class Dad
has_many :follows, as: :followable
# columns: name
end
class Follow
belongs_to :user
belongs_to :followable, polymorphic: true
belongs_to :dad, -> {where("follows.followable_type = 'Dad'")}, foreign_key: 'followable_id'
belongs_to :mom, -> {where("follows.followable_type = 'Mom'")}, foreign_key: 'followable_id'
scope :name_order, -> { includes(:dad, :mom).order("dads.name ASC", "moms.name ASC") }
# columns: user_id, followable_id, followable_type
end
控制器
def index
@follows = current_user.follows.name_order.paginate(:page => params[:page])
end
現在這個按字母順序排列,但是會把爸爸放在列表的前面,當我需要他們混合時,把所有的媽媽都敲下來。我將如何做到這一點?
你可以嘗試改變'.order(「dads.name ASC」,「moms.name ASC」)''order(「following.name ASC」)' – bjhaid
@bjhaid是的,我試過'和「follow.followable.name」。 – user2784630
如果它只是命令範圍需要做,那麼你不需要'includes',所以你可以將範圍寫爲'scope:name_order, - > {order(「following.name ASC」)}' – bjhaid