0

我正在使用Rails 4并具有notifsusers模型。Rails使用自定义模型方法

每个notifhas_manyusers(又名哪个user已见过notif)。我试图获得所有没有被current_user看到的通知。为了检查current_user已经看到了通知符我使用这个模型类:

def seen_by?(u) 
    return self.users.include?(u) 
end 

如何使用一个电话来获取所有notifs其中seen_by(current_user)true

喜欢的东西:

Notif.where(seen_by(current_user): true) 

回答

0

基本上你需要一个在这里反连接模式,可以与left join/is nullnot in/subquerynot exists/subquery检查来进行,例如。第一个问题是,您不能在没有原始sql(或重写关联)的情况下在on子句中指定条件。所以你可以去这里用not in和一个单独的查询方法:

Notif.where.not(id: User.where(id: current_user_id).pluck[:notif_id])