Показать результаты в зависимости от ассоциации - PullRequest
0 голосов
/ 06 марта 2019

Я строю заявку домовладельца MGT. Но у меня возникла проблема - я хочу индексировать запросы только в том случае, если house.id (значение ассоциации) соответствует текущему пользователю.

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

requests_controller.rb:

def index
  unless current_user.estate_agent?
    @requests = Request.where(user_id: current_user).search(params[:search])
  else
    @requests = Request.search(params[:search])
  end
end

request.rb

class Request < ActiveRecord::Base
  belongs_to :user
  belongs_to :house

  def self.search(search)
    key = "%#{search}%"
    if search
      where('description LIKE ? OR title LIKE ?', key, key)
    else
      all
    end
  end
end

house.rb

class House < ActiveRecord::Base
  belongs_to :user
  belongs_to :tenant
  has_many :requests
  belongs_to :contract

  mount_uploader :energy, EnergyUploader

  validates_presence_of :house_title, :description, :doorno, :postcode, :price, :bedroom, :house_type

  def full_house_name
   "#{doorno} #{house_title}"
  end

  def self.search(search)
    key = "%#{search}%"
    if search
      where('doorno LIKE ? OR house_title LIKE ? OR price LIKE ? OR postcode LIKE ? OR house_type LIKE ? OR bedroom LIKE ?', key, key, key, key, key, key)
    else
      all
    end
  end
end

1 Ответ

0 голосов
/ 07 марта 2019

Если я вас правильно понял, вы хотите показать все запросы, которые были сделаны пользователем или сделаны для его реального состояния.

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

Request.where(user_id: current_user.id).or(Request.where(house: { user_id: current_user.id}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...