4

我在 app/models/request/book 文件夹中创建了模型,但 Book::Request::Status.table_name 返回表名“statuses”(“book_request_statuses” - 是正确的表名)。我怎样才能得到正确的表名?

模型位置

模型/
  书/
    要求/
      状态.rb

模型/书/请求/status.rb

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

配置/应用程序.rb

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

如果我设置 self.table_name = "book_request_statuses" 那么模型将正常工作(在模型中),但这不是好方法:)。

对不起我的英语不好

4

1 回答 1

4

1) 使用这些行在 app/models/book.rb 中创建一个模块。

module Book
  def self.table_name_prefix
    'book_'
  end
end

2)然后在 app/models/book/request.rb 中创建另一个模块

module Request
  def self.table_name_prefix
    'request_'
  end
end

3) 将状态模型放在 app/models/book/request/ 目录中。

4)保持所有其他文件完好无损。

我希望这对你有用。

于 2015-11-10T10:10:17.797 回答