68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
# File 'app/models/effective/resources/relation.rb', line 68
def search(name, value, as: nil, column: nil, operation: nil)
raise 'expected relation to be present' unless relation
sql_as = (as || sql_type(name))
sql_column = (column || sql_column(name))
sql_operation = (operation || sql_operation(name, as: sql_as)).to_sym
if ['SUM(', 'COUNT(', 'MAX(', 'MIN(', 'AVG('].any? { |str| sql_column.to_s.include?(str) }
return relation.having("#{sql_column} = ?", value)
end
case sql_as
when :belongs_to, :belongs_to_polymorphic, :has_and_belongs_to_many, :has_many, :has_one
search_associated(name, value, as: sql_as, operation: sql_operation)
else
return relation.where(is_null(sql_column)) if value.to_s == 'nil'
search_attribute(name, value, as: sql_as, operation: sql_operation, sql_column: sql_column)
end
end
|