Как я могу переопределить принадлежащего к получателю? - PullRequest
1 голос
/ 25 октября 2019

У меня есть две модели, подобные этой:

class Foo
  has_many :bars
end

class Bar
  belongs_to :foo
end

Проблема заключается в том, что моя компания приняла «обоснованное решение», разрешив дублирование идентификаторов во всех записях БД. Поэтому, если я вызову что-то вроде этого:

my_bar.foo

Если существует несколько Foo записей с одинаковым идентификатором, то этот вызов вернет неправильную, потому что запрос SQL от получателя ассоциации:

 SELECT  `foos`.* FROM `foos` WHERE `foos`.`id` = 2625196 LIMIT 1

Итак, я хочу обновить свой метод получения ассоциации следующим образом:

class Bar
  belongs_to :foo
  def foo
    Foo.where(id: foo_id, user_id: current_user.id).first
  end
end

Этот тип работает, но не работает для несохраненных записей,и каждый раз вызывает запрос SQL.

Вопрос

Как правильно переопределить метод получения ассоциации?

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