2017-07-01 17 views
2

私の結合テーブル "Memberships"からすべての管理ユーザーを選択しようとしています。グループIDがxで、メンバーシップの役割がadminのメンバーシップからすべてのユーザーを選択するだけで済みます。SQLException:このような列には、多数の結合があります。

@admins = User.joins(:memberships).where(["memberships.group_id ? and memberships.role ?", @group.id, "admin"]) 

問題はmembership.roleを見るのを試みるのではなく、users.roleのようなものがないということです。メンバーシップの役割を探すにはどうすればよいですか?スキーマ内

SQLite3::SQLException: no such column: users.role: SELECT COUNT(*) FROM "users" INNER JOIN "memberships" ON "users"."id" = "memberships"."user_id" WHERE "memberships"."group_id" = ? AND "users"."role" = ? 

メンバーシップ・テーブル:

create_table "memberships", force: :cascade do |t| 
    t.integer "group_id" 
    t.integer "user_id" 
    t.datetime "created_at",    null: false 
    t.datetime "updated_at",    null: false 
    t.integer "role",  default: 0 
    t.index ["group_id", "user_id"], name: "index_memberships_on_group_id_and_user_id", unique: true 
    t.index ["group_id"], name: "index_memberships_on_group_id" 
    t.index ["user_id"], name: "index_memberships_on_user_id" 
    end 

membership.rb

class Membership < ApplicationRecord 
    enum role: { member: 0, admin: 1 } 

    belongs_to :user 
    belongs_to :group 
    validates :user_id, presence: true 
    validates :group_id, presence: true 
end 

group.rb

class Group < ApplicationRecord 
    belongs_to :creator, class_name: "User" 
    has_many :memberships, dependent: :destroy 
    has_many :users, through: :memberships 

user.rb

class User < ApplicationRecord 
    has_many :created_groups, class_name: "Group" 
    has_many :memberships, dependent: :destroy 
    has_many :groups, through: :memberships 
+0

だが、 'ActiveRecord'クエリが' count'はありません示唆しています。それは正しいクエリですか? – Pavan

+0

はい、コントローラからの正確なクエリです。 – ddonche

+0

質問に正しいものがありません。この「@admins = User.joins(:memberships).where(["memberships.group_id =?and memberships.role =?"、@ group.id、 "admin"]) ' – Pavan

答えて

0

あなたは試したことがありますか?あなたが定義している場合、正しくHAS_MANY、それが動作するはずBELONGS_TO、多分それはあなたの `SQL`クエリで私は` COUNT`を参照してください最も単純ソリューション

User.memberships.where(group_id: @group.id, role: "admin") 
関連する問題