2013-07-31 2 views
4

Я создал модель в приложении/модели/папку с запросом/книгой, но Book :: Request :: Status.table_name возвращает имя таблицы «statuses» («book_request_statuses» - это имя правой таблицы). Как я могу получить правильное имя таблицы?Подкатегория модели Rails 4

модель расположения

 
model/ 
    book/ 
    request/ 
     status.rb 

модель/книга/запрос/status.rb

class Book::Request::Status < ActiveRecord::Base 
... 
end 

конфигурации/application.rb

config.autoload_paths += Dir[Rails.root.join('app', 'models', '**', '*.rb')] 

Если я задал self.table_name = "book_request_statuses", тогда модель будет работать корректно (в модели), но это нехорошо :).

извините за мой английский не является хорошим

+1

Я думаю, что на ваш вопрос нет другого ответа. Просто укажите имя таблицы в модели, и оно работает так, как вы хотите. – Lichtamberg

+0

хорошо, спасибо. У Rails 3 нет этой проблемы ... – vmamaev

ответ

3

1) Создать модуль в приложение/модели/book.rb с этими линиями.

module Book 
    def self.table_name_prefix 
    'book_' 
    end 
end 

2) Затем создайте еще один модуль в приложение/модели/книги/request.rb

module Request 
    def self.table_name_prefix 
    'request_' 
    end 
end 

3) Переключите модель состояния внутри приложения/модели/книги/запроса/каталога.

4) Сохраните все остальные файлы в целости и сохранности.

Я надеюсь, что это сработает для вас.

+1

Я должен добавить. Я просто попробовал называть «rails g model request/book/status», и он сгенерировал элементы в этом ответе. Это также привело к правильной миграции. Поэтому я бы предложил сделать это, чтобы сделать это немного легче :). Приветствия. – Andy

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