我试图返回此声明的反转:
scope :subscribed, lambda {|user| where(:venue_id => user.flagged_venues)}
flagged_venues
返回一个id数组,所以当我运行该语句时,我会得到所有标记的场所。我真正想要的恰恰相反:除了被标记的场地之外的所有场地。
我尝试使用!=
代替=>
但是返回了所有场地。
当它变为where("venue_id <> ?", user.flagged_venues)
时,我收到此错误: PG :: DatatypeMismatch:ERROR:WHERE的参数必须是boolean类型,而不是类型记录LINE 1:SELECT&#34 ;事件&#34;。* FROM&#34;事件&#34; WHERE(venue_id&lt;&gt; 2,4)
答案 0 :(得分:0)
你想要flagged_venues
列表中没有的ID,所以我猜你应该替换
where(:venue_id => user.flagged_venues)
通过
where("venue_id not in (?)", user.flagged_venues)