【问题标题】:User relation to group and company MongoMapper与组和公司 MongoMapper 的用户关系
【发布时间】:2013-04-22 13:19:58
【问题描述】:

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

我可以从中得到的关系是一个组有很多用户,公司有很多用户,用户有一个公司,用户有很多组。

但是我的问题是如何使用 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

【问题讨论】:

  • 这看起来是有关系的,那么为什么是 Mongo?
  • 未来可以扩展应用程序而不需要改变完整的数据库。这也只是整个系统的一小部分。

标签: ruby mongodb mongomapper database


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-01-11
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多