модель рельсов не работала с отчетливым утверждением - PullRequest
0 голосов
/ 29 октября 2018

Вот моя проблема: я запрашивал данные из sqlite3 на основе rails 5.1.6, я хотел выбрать сырые файлы с тем же именем события под названием login в тот же день и отличные от пользователей (пользователь может войти в систему несколько раз в один и тот же день). Ниже мой код:

class Query < ApplicationRecord

  def self.event_finder(name, time, **options)

    opt = {
      country_code: "CA",
    }

    if options.any?
      opt = opt.merge(options)
    end

    self.where("event_time >= ?", time)
        .where("event_time < ?", time + 1.day)
        .where(opt)
        .distinct(:user_id)
  end

end

Когда я запустил мою модель в rails console, она вернулась, но не вернула правильные данные, результат был повторен в ключевом слове user_id. Итак, как мне удалить дубликаты, используя модель рельсов?

1 Ответ

0 голосов
/ 29 октября 2018

Попробуйте, как показано ниже

self.where("event_time >= ?", time)
    .where("event_time < ?", time + 1.day)
    .where(opt)
    .select('distinct(user_id)')

или вы можете использовать вот так

self.where("event_time >= ?", time)
    .where("event_time < ?", time + 1.day)
    .where(opt)
    .distinct.pluck(:user_id)

это тоже работает

self.where("event_time >= ?", time)
    .where("event_time < ?", time + 1.day)
    .where(opt)
    .pluck("DISTINCT user_id")
...