新手问题 model 下有多级目录 model 的关系要如何写

dxwts · 2014年03月20日 · 最后由 dxwts 回复于 2014年03月20日 · 1747 次阅读

请问各位,我的 model 目录里有多级目录比如 models/materiale/oitm.rb models/materiale/ocrd.rb

我需要 ocrd has_many :oitms 这个需要怎么写?我按平常的写法保存数据时报错了 uninitialized constant Oitm

共收到 10 条回复

指定 class_name 应该可以

在 config/application.rb 里要加一句

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

#1 楼 @miclle 这个我试过不行

#2 楼 @5swords 谢谢,我试试

#3 楼 @dxwts 我翻了以前的代码

/app/models/activity.rb /app/models/category/activity_category.rb

class Activity < ActiveRecord::Base
  paginates_per 12
  belongs_to :user

  belongs_to :category, :class_name => "Category::ActivityCategory"
  delegate :name, :description, :to => :category, :prefix => true, :allow_nil => true

  mount_uploader :cover, PictureUploader

end

不知道你是怎么写的

另外 ruby-china 源代码中也有

class User
  ...
  has_many :notifications, :class_name => 'Notification::Base', :dependent => :delete
  ...
end

/app/models/user.rb /app/models/notification/base.rb

#5 楼 @miclle 恩 我也有看到 ruby_china 的代码有这样写,然后也也试了一下,不过没成功,可能还是我哪里写的不对,我再仔细检查一下

#5 楼 @miclle 抱歉,确实是我错了

是不是命名空间的问题? models/materiale/oitm.rb

要写成

class Materiale::Oitm < ActiveRecord::Base
  ...
end

#8 楼 @miclle 我用了 mongoid,所以 model

class Materiale::Oitm
    ...
end

之前写错,我把单词写错了,没注意检查(粗心可耻啊)

#8 楼 @miclle 非常感谢

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册