0

我有两张桌子 -

用户 - 过期

兴趣 - user_id,content

我想获取所有到期时间大于现在且其兴趣包含指定术语的用户。

我试过了

Interest.where('content LIKE ?','%#{search_term}%')

然后从中获取用户,但我正在寻找一种单一的查询方式来做到这一点。

4

2 回答 2

3
User.joins(:interests).where('interests.content LIKE ? and users.expires > ?', "%#{search_term}", Time.now)
于 2013-07-29T13:07:56.293 回答
2

尝试这个。我假设用户 has_many :interests。

User.joins(:interests).where('interests.content LIKE ?', "%#{search_term}%")
  .where('expires > ?', Time.now)

您可能还想查看 squeel gem,因为它有一些更好的方法来表达这样的条件,看起来更像红宝石。

于 2013-07-29T13:10:41.627 回答