Rails 大家一般怎么写动态查询

cdredfox · April 04, 2012 · Last by camel replied at April 08, 2012 · 4648 hits

刚开始 rails.想问一下大家一般怎么来写动态查询的? 是学其它的语言中写一大堆的 if..elsif..elsif..end 这样的方式?还是 ror 中有更优雅的方式? 这里说的动态查询是指页面上可能有很多查询条件,而用户有可能输入其中的某一部分进行查询,如果没有输入,则代表不使用该查询条件。

另外还想请教一下,我查了一些资料,rails 中对于对象关联的组合查询好象不支持 where post.comment.name='xxxx' 类似这样的写法,而是需要 Post.join(comment).where("comments.name=?","xxx") 这样的写法?

谢谢~

post.comments.where(:name => 'xxx')

我是用这样的方式:

scope = Product.where(xxx)
scope = scope.where(xxx) if xxx
scope = scope.where(xxx) if xxx
@products = scope

或者可以这样?

@products = Product.where(xxx).where_if(ttt, xxx).where_if(ttt, xxx)

或者可以这样?

@products = Product.search do
  where_if_exists name: name
  where_if_exists "created_at > ?", created_at
end

我发过一个贴子可以参考:http://ruby-china.org/topics/2400

如果有用 search_logic 的 gem 的话,就会比较容易,写法如下: post_comment_name_eq('xxxx')

You need to Sign in before reply, if you don't have an account, please Sign up first.