質問: #{status_id} THEN 1 ELSE NULL END) AS user_status_#{status_id}") ``` のようにかいてみたんですが `Mysql2::Error: Unknown column 'user_statuses.status_id` といわれてしまいます ### 追記 ユーザーとステータスは1対多です ほしいデータは「ユーザごとに」ステータスがONかOFFかというboolean情報で ``` ステータス100 名前 属性いろいろ... ユーザ1: ◯ user1 abc ユーザ2: ☓ user2 def ユーザ3: ☓ user3 ghi ``` のように表示したいです User.where(status_id: 100) でしぼってしまうとONのユーザしか取得できず一覧にユーザ自体が表示されなくなります なので select でカラムを追加してそこにステータスがONかOFFかを格納したいです ### 追記 テーブル定義は必要なカラムだけですがこんな感じです ``` class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| : end end end class CreateUserStatuses < ActiveRecord::Migration def change create_table :user_statuses do |t| t.references :user, null: false, foreign_key: true, index: true t.int :status_id, null: false end end end ```
回答: 「ユーザーとステータスは1対多です」ということでしたら、UserStatus は不要です。敢えて使うこともありますが。 Status に user_id を作って下さい。 class User has_many :statuses end class Status belongs_to :user end で、 left_outer_joins を使って下さい User.includes(:statuses).left_outer_joins(:statuses).where("statuses.id" => 100) かな、、、