如何使用OR语句创建Active Record选择查询?

时间:2012-06-16 08:08:08

标签: ruby-on-rails activerecord

这应该很简单,但我无法弄清楚语法。

我有一个AR查询

ActiveRecord::Base.connection.tables.select { |t| t != 'schema_migrations' }

我想在

中添加一个OR语句
ActiveRecord::Base.connection.tables.select { |t| t != 'schema_migrations' OR 'pg_search_documents' }

正确的语法是什么?谢谢!

2 个答案:

答案 0 :(得分:1)

正确的语法是:

ActiveRecord::Base.connection.tables.select { |t| t != 'schema_migrations' && t != 'pg_search_documents' }

块内的代码只是一个需要返回布尔结果的Ruby表达式,因此您可以使用逻辑AND运算符&&来表示逻辑"表名不是' schema_migrations& #39; AND表名不是' pg_search_documents'"

表达相同逻辑的一种更简单的方法可能是减去要过滤掉的表名数组,如下所示:

ActiveRecord::Base.connection.tables - ['schema_migrations', 'pg_search_documents']

答案 1 :(得分:1)

您可以将拒绝模式与数组include?一起使用,因为它可以轻松地将更多表添加到拒绝列表中。

ActiveRecord::Base.connection.tables.reject do |t| 
  %w(schema_migrations pg_search_documents).include?(t)
end