Module: Surus::Array::Scope

Defined in:
lib/surus/array/scope.rb

Instance Method Summary collapse

Instance Method Details

#array_has(column, *values) ⇒ Object

Adds where condition that requires column to contain all values

Examples:

User.array_has(:permissions, "manage_users")
User.array_has(:permissions, "manage_users", "manage_roles")
User.array_has(:permissions, ["manage_users", "manage_roles"])


10
11
12
# File 'lib/surus/array/scope.rb', line 10

def array_has(column, *values)
  where("#{connection.quote_table_name(table_name)}.#{connection.quote_column_name(column)} @> ARRAY[?]#{array_cast(column)}", values.flatten)
end

#array_has_any(column, *values) ⇒ Object

Adds where condition that requires column to contain any values

Examples:

User.array_has_any(:permissions, "manage_users")
User.array_has_any(:permissions, "manage_users", "manage_roles")
User.array_has_any(:permissions, ["manage_users", "manage_roles"])


20
21
22
# File 'lib/surus/array/scope.rb', line 20

def array_has_any(column, *values)
  where("#{connection.quote_table_name(table_name)}.#{connection.quote_column_name(column)} && ARRAY[?]#{array_cast(column)}", values.flatten)
end