这应该很简单,但我无法弄清楚语法。
我有一个AR查询
ActiveRecord::Base.connection.tables.select { |t| t != 'schema_migrations' }
我想在
中添加一个OR语句ActiveRecord::Base.connection.tables.select { |t| t != 'schema_migrations' OR 'pg_search_documents' }
正确的语法是什么?谢谢!
答案 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