Как Ruby on Rails работает с проверкой «включения»? - PullRequest
1 голос
/ 25 августа 2011

Я использую Ruby on Rails v3.0.9, и у меня есть следующий код в моей модели:

class User < ActiveRecord::Base
  validates :users_role,
    :inclusion => {
      :in      => UserRole.all.map(&:role)
    },
    :presence  => true
end

Когда я просматриваю страницу, связанную с UserRole (то есть страницу, на которой задействован экземпляр пользовательского объекта - например, обычные представления RoR "show" или "index"), и я проверяю файл журнала и вижу, что SQL-запрос UserRole выполнен. То есть, UserRole.all.map(&:role) пробег.

Я хотел бы знать, как работает Ruby on Rails в приведенном выше случае. Это касается производительности? * UserRole.all.map(&:role) ленивый загружен?

1 Ответ

0 голосов
/ 25 августа 2011

В вашей среде разработки вы, вероятно, увидите, что запрос выполняется по любому запросу, который подтверждает пользователя, так как код перезагружается при каждом запросе.Попробуйте один раз в производственном режиме, в этом случае это не должно произойти, так как код загружается только один раз, и вы не поместили запрос в лямбду.Здесь не должно быть отложенной загрузки, как вы уже назвали map в наборе результатов.

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