我正在尝试返回此语句的反转:
scope :subscribed, lambda {|user| where(:venue_id => user.flagged_venues)}
flagged_venues
返回一个 id 数组,因此当我运行该语句时,我会获取所有标记的场所。我真正想要的是恰恰相反:除了标记的场地之外的所有场地。
我用!=
而不是=>
尝试了它,但这返回了所有场地。
当它更改为where("venue_id <> ?", user.flagged_venues)
时,我收到此错误: PG::D atatype不匹配: 错误: WHERE 的参数必须是布尔类型,而不是类型记录 第 1 行:选择"事件"。 从"事件"中 其中 (venue_id <> 2,4)
你想要不在flagged_venues
列表中的id,所以我的猜测是你应该替换
where(:venue_id => user.flagged_venues)
由
where("venue_id not in (?)", user.flagged_venues)