0

是)我有的:

有条件的 sql 请求.where

.where(:users => {:articles => {...}, :settings => {...}, ...})

我需要的:

一个附加条件,所以idof:users不等于@user.id

我尝试了什么:

.where(:users => {['id != ?', @user.id], :articles => {...}, :settings => {...}, ...})

问题是什么:

句法

4

3 回答 3

2

你可以尝试什么:

.where(:users => {:articles => {...}, :settings => {...}, ...}).where('users.id != ?', @user.id)
于 2012-10-02T17:16:23.253 回答
1

我有一个属于_to Place 的 Fact 模型,这很有效:

Fact.includes(:place).where("places.id != 5")
于 2012-10-02T17:15:22.577 回答
1

整个语法可以做得更好

@users = User.scoped
if you_have_conditions_on_articles
  @users = @users.join(:articles).where(...conditions_on_article...)
end
if you_have_conditions_on_settings
  @users = @users.join(:settings).where(...conditions_on_settings...)
end
if you_need_to_exclude_user
  @users = @users.where('id != ?', @user.id)
end

@users

这将创建一个正确的查询,并且您可以避免在不需要时添加条件。

在您循环之前不会执行查询(因此,如果查询未在任何视图中使用,则根本不会执行)。

于 2012-10-02T17:47:02.673 回答