2010-10-18 2 views
4

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

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

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

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, но как насчет модели , которая находится в том же каталоге?

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

ответ

5

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

Откройте конфигурационный/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) 
+0

Спасибо большое! Как насчет того факта, что мне нужно загрузить файлы моих моделей? Rails не распознает JSON, даже если он встроен. Смешные вещи происходят! –

+0

О JSON - кажется, мне нужно вызвать его так: 'ActiveSupport :: JSON', и он сработает. –

Смежные вопросы