Ruby On Rails 3 ...构建查询

Chr*_*nch 0 ruby-on-rails

是否可以分阶段构建查询?

例:

假设我有一个带有用户名,姓氏的搜索表单,其中任何一个都可以填空.

查询应根据填写的字段进行OR运算:

SELECT*FROM表WHERE username ='xyz'或last_name ='abc'或者active ='xyz'

但它可能导致只查询2个字段...我需要以某种方式弄清楚如何或查询而不做像字符串构建那样愚蠢的事情.

Dyl*_*kow 6

如果你在Rails 3上,你可以使用arel链接到AND这些.

@users = User.scoped
@users = @users.where(:username => params[:username]) unless params[:username].blank?
@users = @users.where(:last_name => params[:last_name]) unless params[:last_name].blank?
Run Code Online (Sandbox Code Playgroud)

但是,如果不进行字符串构建,arel不支持OR条件.

  • 不过,这些"和"条件不会在一起吗? (2认同)