0

我正在尝试在控制器中做一个简单的或语句

这会生成一组我有兴趣展示并且运行良好的行程。

@trips = Trip.where(:userid => @friends)

但是,我想添加另一组旅行;用户 ID == current_user.id 的行程

@trips = Trip.where(:userid => current_user.id)

试图结合这两个我试过......

@trips = Trip.where(:conditions => ['userid= ? OR userid=?', @friends, current_user.id])

知道半身像在哪里吗?提前致谢。

4

2 回答 2

1

只需传递一个数组即可获得等效的 SQLWHERE ... IN子句。

Trip.where(userid: [@friends, current_user.id])

请参阅ActiveRecord Rails 指南,2.3.3 子集条件

于 2013-08-16T23:39:32.453 回答
0

@friends数组吗?IN当您使用散列语法生成时,ActiveRecord 会将您的 where 语句转换为 SQL子句。当您在原始 SQL 中构建 OR 语句时,您需要IN手动执行。

@trips = Trip.where('userid IN ? OR userid = ?', @friends, current_user.id)

另外,你的专栏叫userid? 通常它会被称为user_id- 这是一个错字还是你只是有一个异常的数据库?

于 2013-08-16T23:39:50.693 回答