我有以下数据库:
class User < ActiveRecord::Base
has_and_belongs_to_many :apps
class App < ActiveRecord::Base
has_and_belongs_to_many :users
在用户视图(users/show.html.haml
)中,我想列出所有按当前用户排序的应用排序。
%table
%thead
%tr
%th Name
%th Available
- for app in App.order("??????")
%tr
%td= link_to app.name, app_path(app)
%td
- if @user.apps.include?(app)
%i.icon-ok
- else
%i.icon-remove
我的问题是我在订单功能中添加了什么来进行排序。
答案 0 :(得分:2)
或通过类似的东西:
App.all.partition{|app| @user.apps.include?(app)}.flatten
有多种方法可以做到!
答案 1 :(得分:1)
如果我理解正确,您希望将应用程序与属于当前用户的应用程序排在第一位。我不认为这在一个查询中是可能的。我认为最简单的方法是将其拆分为两个查询:
user_apps = current_user.apps
non_user_apps = App.where(:id.not_in => current_user.app_ids)
@apps = user_apps + non_user_apps
然后你可以迭代这个@apps
数组,元素将按你想要的顺序排列。
答案 2 :(得分:0)
在订购方法中,您可以放置所需的任何应用程序方法名称。它可以是
App.order(:id)
App.order(:name)
App.order(:created_at)
或其他任何内容。
答案 3 :(得分:0)
试试这个: @ user.apps.order(:名称)