【问题标题】:Rails 4 model subfolderRails 4 模型子文件夹
【发布时间】:2013-08-01 06:26:57
【问题描述】:

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

模型位置

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

model/book/request/status.rb

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

config/application.rb

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

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

对不起,我的英语不好

【问题讨论】:

  • 我认为您的问题没有其他答案。只需在模型中指定表名,它就可以按照您的意愿工作。
  • 好的,谢谢。 Rails 3 没有这个问题...

标签: ruby-on-rails model subdirectory


【解决方案1】:

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) 保持所有其他文件完好无损。

我希望这对你有用。

【讨论】:

  • 我应该补充。我刚刚尝试调用rails g model request/book/status,它生成了这个答案中的项目。它还生成了正确的迁移。所以我建议这样做以使其更容易:)。干杯。
猜你喜欢
  • 2012-12-23
  • 2014-08-08
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
  • 2012-09-16
  • 2014-07-10
相关资源
最近更新 更多