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

cdredfox · 2012年04月04日 · 最后由 camel 回复于 2012年04月08日 · 4647 次阅读

刚开始 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')

需要 登录 后方可回复, 如果你还没有账号请 注册新账号