是)我有的:
有条件的 sql 请求.where
.where(:users => {:articles => {...}, :settings => {...}, ...})
我需要的:
一个附加条件,所以id
of:users
不等于@user.id
我尝试了什么:
.where(:users => {['id != ?', @user.id], :articles => {...}, :settings => {...}, ...})
问题是什么:
句法
是)我有的:
有条件的 sql 请求.where
.where(:users => {:articles => {...}, :settings => {...}, ...})
我需要的:
一个附加条件,所以id
of:users
不等于@user.id
我尝试了什么:
.where(:users => {['id != ?', @user.id], :articles => {...}, :settings => {...}, ...})
问题是什么:
句法
你可以尝试什么:
.where(:users => {:articles => {...}, :settings => {...}, ...}).where('users.id != ?', @user.id)
我有一个属于_to Place 的 Fact 模型,这很有效:
Fact.includes(:place).where("places.id != 5")
整个语法可以做得更好
@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
这将创建一个正确的查询,并且您可以避免在不需要时添加条件。
在您循环之前不会执行查询(因此,如果查询未在任何视图中使用,则根本不会执行)。