ActiveRecord метод поиска # где не фильтрует результаты запроса

TL; DR: Почему я получаю список всех резидентов, когда использую методы класса для охвата между активными и неактивными резидентами?

Мое приложение использует гем 'activ_as_tenant'. Модель арендатора называется Account, в которой много сотрудников, которые управляют резидентами.

class Account < ActiveRecord::Base
  before_create :set_subdomain

  has_one  :admin, class_name: 'Employee', foreign_key: :account_id, 
    dependent: :destroy, inverse_of: :account

  has_many :employees, class_name: 'Employee', foreign_key: :account_id, 
    dependent: :destroy, inverse_of: :account

  has_many :residents
  has_many :invites
  has_many :daily_summaries
  has_one  :subscription
  .
  .
  .
end

В схеме моего резидента есть атрибут флага с именем is_activeЦель состоит в том, чтобы провести различие между активными и мягко удаленными резидентами. Вы также можете увидеть добавленные ограничения БД.

create_table :residents do |t|
  t.integer    :account_id, null: false
  t.integer    :employee_id, null: false
  t.boolean    :is_active, default: true, null: false
  .
  .
  .
end

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

В моем классе Resident у меня есть следующие методы класса для области действия, основанные на активном / неактивном состоянии.

  class Resident < ActiveRecord::Base
    acts_as_tenant(:account)
    .
    .
    .
    def self.inactive_count(current_account)
      where({ account_id: current_account.id, is_active: false }).count
    end

    def self.default(current_account)
      where({ account_id: current_account.id, is_active: true })
    end

    def self.inactive(current_account)
      # where({ account_id: current_account.id, is_active: false })
      where("account_id = ? AND is_active = ?", current_account.id, false).first 
    end

    def archive
      update_attribute(:is_active, false)
    end
    .
    .
    .
  end

Моя проблема в том, что я получаю список всех жителей как на активной, так и на неактивной вкладках в моем индексном представлении. Обратите внимание, что фамилия одинакова на обоих изображениях этой страницы просмотра.

Я бы предпочел, чтобы метод класса возвращал только активных или неактивных жителей соответственно.

Я хочу выяснить, почему я не получаю только активных или только неактивных резидентов на основе моих методов класса запросов.

Методы класса для активного / неактивного счета, кажется, работают как ожидалось, вот пик.

  def index
   @inactive_residents = Resident.inactive(current_account)
   @inactive_resident_count = Resident.inactive_count(current_account)
   @active_residents = Resident.default(current_account)
   @active_resident_count = Resident.active_count(current_account)
  end

Мое чтение до сих пор, чтобы решить:

Журналы сервера включены, чтобы показать SQL

Посмотреть шаблоны

index.html.erb

  <li class="active">
    <a href="#" data-toggle="tab">
      Active Residents&nbsp;&nbsp;
      <span class="badge badge-purple">
        <%= @active_resident_count %>
      </span>
    </a>
   </li>
   <li>
     <a href="#" data-toggle="tab">
       Inactive Residents&nbsp;&nbsp;
       <span class="badge badge-dark">
         <%= @inactive_resident_count %>
       </span>
     </a>
   </li>

_active_residents.html.erb

<% if @active_residents.any? %>
  <tbody>
    <% @active_residents.reverse_each do |resident| %>
      .
      .
      .
    <% end %>
  </tbody>
<% end %>

_inactive_residents.html.erb

<% unless @inactive_residents.nil? %> 
  <% @inactive_residents.reverse_each do |resident| %>
    .
    .
    .
  <% end %>
<% end %>

Обновить после комментария

Мои журналы находятся ниже, ничего не меняется в журнале, когда я выбираю вкладку "неактивно" в браузере. Я также не вижу никакого вывода из консоли js в инструментах разработчика, если я не установил опцию для подробного вывода. Я включу изображение этого также. Logfile pt.1

Logfile pt.2

2 ответа

Решение

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

Это сработало для меня

Второй комментарий в ответе Яна Фото на этот пост

Подводя итог по ссылке выше:

если вы используете data-attribute метод, который вы должны иметь href атрибут установлен на идентификатор вкладки, которую вы хотите открыть. В версии JS у вас должно быть что-то вроде $('#myTab a[href="#profile"]').tab('show') чтобы открыть вкладку со значением href, установленным в #profile

Мой пример

в обоих частичных файлах я добавил

<div class="tab-pane fade in active" id="my_tab1_id">

и в index.html.erb, в котором находятся партиалы, которые я изменил href значение от # в my_tab_id

<ul class="nav nav-tabs tabs-right">
  <li class="active">
    <a href="#my_tab1_id" data-toggle="tab">
      Active Residents&nbsp;&nbsp;
      <span class="badge badge-purple">
        <%= @active_resident_count %>
      </span>
    </a>
   </li>
   <li>
     <a href="#my_tab2_id" data-toggle="tab">
       Inactive Residents&nbsp;&nbsp;
       <span class="badge badge-dark">
         <%= @inactive_resident_count %>
       </span>
      </a>
    </li>
  </ul>
Другие вопросы по тегам