user_statuses テーブルに fk: user_id と status_id があって
users から has_many で関連付けられています
ユーザ一覧画面で
たとえば status_id = 100 のレコードをもつかどうかを表示したい場合どうかけばいいのでしょうか
status_id = 100 @users = Users.includes(:user_statuses) .select("count(CASE WHEN user_statuses.status_id = #{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
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/06/06 06:49