我正在使用Ruby on Rails 2.3.8,我想知道如何在子文件夹中组织模型,以便Ruby可以识别它们。
答案 0 :(得分:10)
据我所知,您需要命名模型以便加载它们。
使用生成器:
> ./script/generate model Customer::Address
将在app/models/customer/address.rb
class Customer::Address
end
它将以递归方式加载,但为了让rails找到它,它需要具有与路径对齐的命名空间。
当您使用发电机时(至少在导轨2.3.5及更低版本中,我已经对此进行了测试)的公平警告。它会将表名创建为customer_addresses
,但默认情况下模型仍会查找表{8}的表名。您需要将迁移数据库名称更改为地址或添加addresses
或类似名称以使两者排成一行。
答案 1 :(得分:3)
Rails将从子目录(对于Ruby 2.0+)以递归方式加载/ app / models中的所有模型。您可以将它们拆分为逻辑子目录:数据库,用户,客户等
答案 2 :(得分:1)
在Rails 5中,如果模型在Models / customer / address.rb中
您通过
访问它Customer::Address.all
答案 3 :(得分:0)
然后要调用该模型,我必须像这样引用它:: Customer :: Address.all,不确定为什么它需要前导:::