module Surus::Array::Scope
Public Instance Methods
array_has(column, *values)
click to toggle source
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"])
# 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)
click to toggle source
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"])
# 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
Private Instance Methods
array_cast(column_name)
click to toggle source
# File lib/surus/array/scope.rb, line 25 def array_cast(column_name) column = columns_hash[column_name.to_s] "::#{column.sql_type}[]" end