0
ユーザーがイベントのメンバーであるかどうかを確認したいと思います。しかし、このエラーを取得します。多対多のレールでクエリを結合します
class Event < ApplicationRecord
has_many :memberships
has_many :users, through: :memberships
def has_membership?(user)
joins(:memberships).where(memberships: { user_id: user.id })
end
end
class User < ApplicationRecord
has_many :memberships
has_many :events, through: :memberships
end
EventsController
def show
@event = Event.find_by_id(params[:id])
if @event.has_membership?(current_user)
render json: @event, status: 200
else
render json: {
error: "Permission denied"
}, status: 422
end
end
戻り値:
undefined method `joins' for <Event:0x000000059a3148>
しかし、私はIRBにしようとした場合:Event.joins(:memberships).where(memberships: { user_id: user.id })
それが正しいデータを示しています。
を照会するだろうか? 'メンバーシップ 'を直接照会することはできません。 'Membership.where(user_id:user.id、event_id:self.id)' – Iceman
ありがとうございます!それはより良い解決策です:) –