0
我想在Rails中创建一个查询,但是在创建正确的查询时遇到了一些麻烦。下面是我的模型与他们的关系。查询关系在Rails中的关系
class User < ActiveRecord::Base
has_and_belongs_to_many :rsvps, class_name: 'Event'
has_many :albums
end
class Event < ActiveRecord::Base
has_many :albums
has_and_belongs_to_many :attendees, class_name: 'User'
end
class Album < ActiveRecord::Base
belongs_to :user
belongs_to :event
end
我需要获取用户具有“rsvp'ed”的所有事件,以表示他们还没有上传相册。我可以找出如果用户已经上传的相册使用以下特定事件:
u = User.find(1)
e = Event.find(1)
e.albums.where(user_id: u.id)
我希望能够在每个用户的rsvp'ed专辑运行此查询。我知道我可以做这样的事情:
u.rsvps.delete_if { |e| !e.albums.where(user_id: u.id).blank? }
不过,我要做到这一切在一个查询,而不是得到回函,然后遍历它们并删除它们在必要时。
我很欣赏这个答案,但是我正在寻找一种方法来获取他们被rsvp的事件,他们没有上传相册。我现在不关心这些专辑。 – searsaw
哦拍摄,对不起,我完全误读了这个问题。我用一个解决方案更新了我的答案,该解决方案应该适用于您实际需要的内容。 –
上述唯一的问题是当'Albums.where(user_id:u.id).pluck(:event_id)'返回一个空数组时,它返回一个空。它应该返回所有的rsvps。 – searsaw