явное требование в Rails 3 - PullRequest
4 голосов
/ 18 октября 2010

Я конвертирую свое приложение Rails 2 в Rails 3. До сих пор я был успешным.Тем не менее, есть эта странная проблема, которая мне явно требуется любые внешние файлы.Вот моя оригинальная (то есть Rails 2) модель ActiveRecord:

class Book < ActiveRecord::Base
  belongs_to :author
  has_many :translations, :dependent => :destroy
  include Freebase
...
end

, чтобы она работала в Rails 3, мне требуется модель Translation и Freebase.rb file, таким образом:

class Book < ActiveRecord::Base
  require File.expand_path(File.dirname(__FILE__) + '/translation.rb')
  belongs_to :author
  has_many :translations, :dependent => :destroy
  require File.expand_path(File.dirname(__FILE__) + '../../../lib/freebase.rb')
  include Freebase
  ...
end

Это нормальный способ в Rails 3, или я делаю что-то не так.Другими словами, почему необходимо явно включать эти файлы?Возможно, есть какая-то причина для файла Freebase.rb , который находится в папке lib , но как насчет модели Translation , которая находится в той же самойdir?

Спасибо, ребята!

1 Ответ

5 голосов
/ 18 октября 2010

Rails 3 не загружается автоматически так, как Rails 2.

Откройте файл config / application.rb и настройте строку, которая выглядит следующим образом:

# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/extras)

В вашем случае вы, вероятно, хотите иметь

config.autoload_paths += %W(#{config.root}/lib)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...