Rails атрибуты lazyload при необходимости - PullRequest
1 голос
/ 09 июля 2011

У меня есть модель рельсов, которая имеет ряд атрибутов (столбцов), которые я не хочу загружать для каждого запроса на выборку. Так что мне нужно было бы сделать так, чтобы при попытке доступа к атрибуту (через метод getter) он выполнял оператор select для извлечения ВСЕХ столбцов из базы данных.

Мой вопрос заключается в том, что когда я выбираю столбцы из базы данных, то есть ли способ применить эти значения атрибута со значением activerecord без необходимости создания цикла for для применения каждого значения атрибута?

Ответы [ 2 ]

4 голосов
/ 09 июля 2011

Попробуйте это так:

def Person < ActiveRecord::Base
  def method_missing(method_id, *args, &block)
    begin
      super
    rescue
      reload
      super
    end
  end
end

И затем изначально загрузите записи, например, такие:

person = Person.select(:id).find(20)

И когда вы сделаете

person.name

тогда он должен нажать method_missing и перезагрузить запись (со всеми атрибутами) в случае сбоя.

0 голосов
/ 01 августа 2018

https://github.com/jorgemanrubia/lazy_columns обеспечивает очень похожую функциональность в удобной форме драгоценного камня. Это позволяет указывать определенные столбцы, которые будут загружаться лениво.

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