Class: RailsAdminNext::Adapters::ActiveRecord::WhereBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_admin_next/adapters/active_record.rb

Instance Method Summary collapse

Constructor Details

#initialize(scope) ⇒ WhereBuilder

Returns a new instance of WhereBuilder.



176
177
178
179
180
181
# File 'lib/rails_admin_next/adapters/active_record.rb', line 176

def initialize(scope)
  @statements = []
  @values = []
  @tables = []
  @scope = scope
end

Instance Method Details

#add(field, value, operator) ⇒ Object



183
184
185
186
187
188
189
190
191
192
# File 'lib/rails_admin_next/adapters/active_record.rb', line 183

def add(field, value, operator)
  field.searchable_columns.flatten.each do |column_infos|
    statement, value1, value2 = StatementBuilder.new(column_infos[:column], column_infos[:type], value, operator, @scope.connection.adapter_name).to_statement
    @statements << statement if statement.present?
    @values << value1 unless value1.nil?
    @values << value2 unless value2.nil?
    table, column = column_infos[:column].split(".")
    @tables.push(table) if column
  end
end

#buildObject



194
195
196
197
198
# File 'lib/rails_admin_next/adapters/active_record.rb', line 194

def build
  scope = @scope.where(@statements.join(" OR "), *@values)
  scope = scope.references(*@tables.uniq) if @tables.any?
  scope
end