jbox-web / ajax-datatables-rails

A wrapper around DataTable's ajax methods that allow synchronization with server-side pagination in a Rails app
MIT License
587 stars 228 forks source link

Why is get_raw_records called three times? #367

Open kunzig940 opened 4 years ago

kunzig940 commented 4 years ago

When debugging, get_raw_records is called three times. How can I bypass such behavior? For example the logs show:

  def get_raw_records
    puts "Raw Records"
    User.all
  end

Logs:

Raw Records
   (0.7ms)  SELECT COUNT(*) FROM "users"
Raw Records
  CACHE  (0.0ms)  SELECT COUNT(*) FROM "users"
Raw Records
  User Load (0.5ms)  SELECT  "users".* FROM "users" ORDER BY users.first_name ASC LIMIT $1 OFFSET $2  [["LIMIT", 75], ["OFFSET", 0]]

If I return zero User records (i.e. User.none) it is only called twice so I'm assuming it's something to do with sorting/filtering in the background.

n-rodriguez commented 4 years ago

sorting/filtering in the background.

exactly

See https://github.com/jbox-web/ajax-datatables-rails/blob/master/lib/ajax-datatables-rails/base.rb#L32

kunzig940 commented 4 years ago

Is there a way to bypass the additional calls cleanly by any chance? I have the data exactly how I need it on the first fetch. Thanks for the gem it's kept things a lot cleaner.

The main issue is that I call elasticsearch on AWS in get_raw_records so calling it 3 times slows things down considerably. I'm wondering if get_raw_records should only be the initial models & joins and then the filter_records(records) method should have the logic? Will report back.

NeimadTL commented 1 year ago

@kunzig940, any update on this please? having the same issue.