0

これは非常に単純なはずですが、構文がわかりません。

AR クエリがあります

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

ORステートメントを追加したい

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

正しい構文は何ですか? ありがとう!

4

2 に答える 2

1

include?拒否リストにテーブルを簡単に追加できるため、拒否パターンを array と一緒に使用できます。

ActiveRecord::Base.connection.tables.reject do |t| 
  %w(schema_migrations pg_search_documents).include?(t)
end
于 2012-06-16T15:03:03.250 に答える
1

正しい構文は次のとおりです。

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

ブロック内のコードは、ブール値の結果を返す必要がある単なる Ruby 式であるため、論理 AND 演算子&&を使用して「テーブル名は 'schema_migrations' ではありません AND テーブル名は 'pg_search_documents' ではありません」というロジックを表現できます。

おそらく、同じロジックを表現するより簡単な方法は、次のように除外するテーブル名の配列を減算することです。

ActiveRecord::Base.connection.tables - ['schema_migrations', 'pg_search_documents']
于 2012-06-16T09:19:49.097 に答える