На нашем сайте есть изображения, которые пользователи могут выбрать в качестве изображений профиля для своих учетных записей. Вот соответствующие строки в моделях:
class User < ApplicationRecord
has_one :profile_image, dependent: :destroy
has_one :image, through: :profile_images
accepts_nested_attributes_for :profile_image, allow_destroy: true
end
class Image < ApplicationRecord
has_many :profile_images, dependent: :destroy
has_many :users, through: :profile_images
end
class ProfileImage < ApplicationRecord
belongs_to :image
belongs_to :user
validates :user_id, presence: true, allow_nil: false, uniqueness: true
validates :image_id, presence: true, allow_nil: false
end
Я бы хотел добавить опцию в представление индекса пользователя, чтобы показывать только пользователей с изображениями профиля. Я ищу с where.not(profile_image: nil)
в контроллере, но я просто возвращаю всех пользователей.
В консоли я могу подтвердить, что у меня есть пользователи с и без изображений профиля:
>> User.first.profile_image
=> nil
>> User.second.profile_image
=> #<ProfileImage id: 2, image_id: 9, user_id: 6, created_at: "2019-10-26 17:52:37", updated_at: "2019-10-26 17:52:37">
Но я получаю те же итоги от User.all.count
и User.where.not(profile_image: nil).count
.