用户与组和公司MongoMapper的关系

时间:2013-04-22 13:19:59

标签: ruby mongodb mongomapper database

我需要创建一个系统,用户可以使用用户帐户登录系统,其中用户是管理员或编辑者等组的成员。用户也是公司的成员。在群组和公司的情况下,他们可以拥有多个用户,但用户只能是一个公司和多个群组的成员。

我可以得出的关系是,一个群体有很多用户,公司有很多用户,用户有一个公司,用户有很多群体。

但我的问题是如何使用ruby和mongoMapper创建这个?我查看了文档和其他来源,但没有找到关于如何使用或设置它的良好解决方案或解释。

如果有人有更好的方式,也欢迎。

这些是我写的当前课程。

class User
  include MongoMapper::Document

  key :username, String
  key :password, String
  key :name, String

  belongs_to :group
  belongs_to :company
end


class Group
  include MongoMapper::Document

  key :group_id, Integer
  key :name, String
  key :accesLevel, Integer

  many :user
end


class Company 
  include MongoMapper::Document

  key :name, String

  many :user
end

1 个答案:

答案 0 :(得分:0)

经过一些谷歌搜索,我找到了解决方案。

首先我让用户类看起来像这样:

class User
  include MongoMapper::Document

  key :username, String
  key :password, String
  key :name, String
  key :companyID
  key :groupID
  timestamps!

end
然后小组和公司类就像这样:

class Company 
  include MongoMapper::Document

  key :name, String
  timestamps!

end



 class Group
  include MongoMapper::Document

  key :name, String
  key :accesLevel, Integer
  timestamps!

end

有了这些类,我改变了我的控制器,首先创建了一个公司,然后是一个组,这些也可以加载但是为了便于测试,没有必要这样做,所以我不需要编写代码对此。

company = Company.new
company.name = "comp"

group = Group.new
group.name = "admin"

user = User.new
user.name = "user1"
user.username = "user1"
user.password = "passuser1"

user.groupID = group.id
user.companyID = company.id

db_config = YAML::load(File.open('./dbconfig.yml'))

MongoMapper.connection = Mongo::Connection.new(db_config['hostname'])
MongoMapper.database = db_config['name']

company.save
group.save
user.save