その特定の関連性を持つ結果のみを表示する where ステートメントを実行しようとしています。
例えば:
会社には、会社のステータスを通じて多くのステータスがあります。ゴールド、シルバー、ブロンズの複数のステータスを持つことも、まったくステータスを持たないこともできます。結果がステータス (ゴールド、シルバー、および/またはブロンズ) を持つ企業のみを返し、ステータスを持たない企業は返されないようにしようとしています。
その特定の関連性を持つ結果のみを表示する where ステートメントを実行しようとしています。
例えば:
会社には、会社のステータスを通じて多くのステータスがあります。ゴールド、シルバー、ブロンズの複数のステータスを持つことも、まったくステータスを持たないこともできます。結果がステータス (ゴールド、シルバー、および/またはブロンズ) を持つ企業のみを返し、ステータスを持たない企業は返されないようにしようとしています。
あなたのユースケースはあまり明確ではありませんが、あなたが望んでいるのは、指定されたものと一致するステータスを持つ会社を見つけることだと思います:
Company.includes(:statuses).where('status.name = ?', params[:status_name])
Company を仮定すると、正しいクエリが得られるはずですhas_many :statuses
。
Active Record Associations に関する Ruby on Rails ガイドから:
4.2.3 How To Know Whether There’s an Associated Object?
関連するオブジェクトがあるかどうかを知るには、association.nil? を確認します。
@supplier.account.nilの場合?
@msg = "このサプライヤーのアカウントが見つかりません"
終わり
http://guides.rubyonrails.org/association_basics.html#detailed-association-reference
Company.joins(:statuses).select("DISTINCT(companies.id), companies.*, statuses.*")