Альтернативный метод для владельца прокси в ActiveRecord
ActiveRecord proxy_owner теперь устарел, и объяснение здесь очень расплывчатое о том, как его изменить, поэтому я не уверен, как использовать его в моем случае: http://apidock.com/rails/ActiveRecord/Associations/AssociationProxy
Вот что я пытаюсь сделать:
class Library < ActiveRecord::Base
has_many :books do
def some_method
proxy_owner.author
end
end
end
Я получаю предупреждение, когда я запускаю этот код, что proxy_owner является устаревшим:
DEPRECATION WARNING: Calling record.books.proxy_owner is deprecated. Please use record.association(:books).owner instead.
Я могу заменить proxy_owner.автор:
@associaton.owner.author
Это работает; однако, это кажется опасным. Я что-то упустил? - здесь?
1 ответ:
Я думаю, что безопаснее отправить
:owner
вproxy_association
вместо:class Library < ActiveRecord::Base has_many :books do def some_method proxy_association.owner.author end end end
Использование
proxy_association
теперь упоминается в документации :Однако внутри фактического кода расширения у вас не будет доступа к запись (record.ассоциации (элементы).владелец), как указано выше. В этом случае вы можете получить доступ к proxy_assocation. Например, запись.ассоциации (элементы) и запись.предметы.proxy_assocation вернет тот же самый объект, позволяя вы, чтобы сделать такие звонки, как proxy_assocation.владелец внутри ассоциации увеличение.