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'。 'Membership.where(user_id:user.id,event_id:self.id)' – Iceman
谢谢!这是更好的解决方案:) –