Как добавить условные где пункты в рельсах

Я новичок в rails и пытаюсь выполнить поиск по таблице с помощью rails, и я просто использую свои знания sql для этого. Но это просто не похоже на рельсы или даже рубин ...

Есть ли лучший способ сделать то, что я делаю ниже? (в основном, только передавайте аргументы даты в sql, если они заполнены)

def search(begin_date=nil, end_date=nil)

    subject = " and created_at "

    if !(begin_date.nil? || end_date.nil?)
      where_part = subject + "BETWEEN :begin_date AND :end_date"
    else if (begin_date.nil? && end_date.nil?) 
      where_part = ""
    else if(begin_date.nil?)
      where_part = subject + " <= :end_date"
    else if (end_date.nil?)
      where_part = subject + " >= :begin_date"
    end
    end
    end
    end

    User.joins(places: {containers: {label: :user}}).where("users.id= :user_id "+where_part, user_id: self.id, begin_date:begin_date, end_date:end_date).group(...).select(...)
end

EDIT

user.rb

has_many :containers
has_many :user_places
has_many :places, through: :user_places
has_many :labels

place.rb

has_many :containers
has_many :user_places
has_many :users, through: :user_places

container.rb

belongs_to :label
belongs_to :place
belongs_to :user

label.rb

belongs_to :user
has_many :containers

По сути, я хочу получить счетчик количества контейнеров в ярлыках данного пользователя или с прямыми отношениями для каждого местоположения и хочу иметь возможность фильтровать его по датам начала и окончания.

Любая из этих дат может быть нулевой, и поэтому мне нужно будет указать это в моем «запросе».

Мой вопрос: как я могу сделать это путь рельсов? Я посмотрел наhttp://guides.rubyonrails.org/active_record_querying.html и, возможно, я мог бы использовать где-нибудь здесь команду exc ... но эта модель отношений кажется немного сложной, чтобы сделать это с ActiveRecord ... как я могу ?, я действительно думаю, что я должен использовать ActiveRecord, но как?

Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос