私はrail_projectのインデックスビューにorder_byフィルタを追加しようとしています。ORDER BY関連モデルレール4
これまでのところ、それはフィルタによっていくつかの基本的な順序からうまく機能しました。
私は現在、自分のプロジェクトに添付されているワーカーログインによって注文しようとしています。
class Project < ActiveRecord::Base
belongs_to :worker, class_name: User, foreign_key: "worker_id"
私は私のデータをソートするために、私のモデルでは、「スコープ」を使用し、これまでのところ、それは私が得たものである:
scope :worker_order, -> (order) {joins('LEFT JOIN users ON users.id = projects.worker_id')
.order('users.login' => order)}
しかし、私は、このエラーコード取得しています:
をMysql2::Error: Unknown column 'projects.users.login' in 'order clause': SELECT
projects
.* FROMprojects
LEFT JOIN users ON users.id = projects.worker_id ORDER BYprojects
.users.login
DESC LIMIT 30 OFFSET 0
scope :worker_order, -> (order) {joins('LEFT JOIN users ON users.id = projects.worker_id')
.order(:login => order)}
または:
I'vもそれを行うには他の方法を試してみました:それは、レールでのソートに対処するための良い方法だ場合、私は本当に知りませんが、それは、フィルタリングのためによくやったとすると、このプロジェクトを所有しているクライアント上の私のフィルタが動作する理由を私は本当に得ることはありません
scope :worker_order, -> (order) {includes(:worker)
.order('users.login' => order)}
ソート方法はありません。あなたの助け
こんにちは、あなたの答えのための 感謝を。 私はすでに文字列で試したことがあると思いますが、以前は "projects"を含んでいます。 スコープ:クライアント、 - >(クライアント){distinct.joins( 'LEFT JOIN参加者ON participants.project_id = projects.id') .joins 'LEFT JOIN contact on contacts.id = participants.contact_id')ここで( 'contacts.client_id =?'、client)} 私は今この鉄道を統合しようとしています:http://railscasts.com/episodes/228-sortable-table-columnsをプロジェクトに追加しました。 Thx – galettan