Я работаю над проектом Rails 2.1, который имеет ApplicationController, подобный следующему:
class ApplicationController < ActionController:Base
THIS_SITE = Site.find_by_url('www.example.net')
ADMIN_ROLES = StaffRole.find(:all, :conditions => ["site_id = ? AND name IN (?)", ApplicationController::THIS_SITE.id, 'Administrator'])
end
Я не смог запустить тесты, потому что в моей тестовой среде я получал бы ошибку, говоря, что THIS_SITE - этоноль при попытке определить ADMIN_ROLES.Я исправил проблему, выполнив следующее:
class ApplicationController < ActionController:Base
def self.this_site
@@this_site ||= Site.find_by_url('www.example.net')
end
def self.admin_roles
@admin_roles ||= StaffRole.find(:all, :conditions => ["site_id = ? AND name IN (?)", ApplicationController::this_site.id, 'Administrator'])
end
ApplicationController::THIS_SITE
и ApplicationController::ADMIN_ROLES
используются во всем приложении в представлениях, контроллерах и моделях.Я чувствую, что это все неправильно и грязно.Я ошибаюсь, думая, что это неправильно / грязно?Если нет, то как это можно изменить?
Спасибо.