まずは話題。
次のような has_many :trough 関連付けで相互にリンクされている 3 つのモデルがあります。
#User model
has_many :chars_del, :class_name => CharDelegated, :dependent => :destroy
has_many :chars, :through => :chars_del
#CharDelegated model
#has a field owner:integer
belongs_to :char
belongs_to :user
#Char model
#has fields name:string
has_many :chars_del, :class_name => CharDelegated
has_many :users, :through => :chars_del
私がする必要があるのは、特定のユーザーが所有するすべての文字 (:owner フィールドが true) を名前順に並べて見つけるために、ユーザー レコードから検索する必要があることです。私はこれで数時間立ち往生しているので、非常に単純な答えを見逃していた可能性があると思います...しかし、これまでに試したことは何もうまくいきませんでした。
UPDATE は機能するものを見つけました:
user.chars.where(:char_delegateds => {:owner => 1}).order('name')
:chars_del でエラーが発生した理由はわかりませんが、完全なテーブル名でうまくいきました。
アンドリュー、あなたの答えもうまく機能し、データベース上で少し高速です。