组和用户的数据建模

时间:2010-11-15 18:08:54

标签: data-structures model data-modeling sinatra datamapper

我有一个允许用户创建群组的网络应用。 在应用程序的首页上,任何用户都可以 - 无需注册 - 通过在文本输入列表中输入名称来创建组并将其他用户添加到组中。然后,创建该组的用户应该能够通过向每个名称添加电子邮件来邀请列表中的人员。我希望用户最初提供名称的原因以及稍后通过电子邮件提供ivitations的原因是我希望用户能够在注册之前试用该应用及其功能。

所以我有两个模型GroupUser具有多对多关系。用户模型需要唯一的电子邮件地址,因此显然我无法为组中的每个用户创建新的用户对象。那么如何确保添加到组中的临时用户将映射到通过邀请创建的用户,或者受邀人员是否已在应用程序中拥有用户?

我正在考虑创建一个Profile模型,该模型具有名称并属于一个组和一个用户,但每个用户都会拥有他/她所属的每个组的个人资料。我想不出另一个选择,但必须有一个......

1 个答案:

答案 0 :(得分:0)

您需要使用工具将大脑中的数据信息转储到数据库模型中:)

http://wb.mysql.com/http://www.sequelpro.com/

然后你需要将它抽象到你的应用程序中。

http://datamapper.org/

安装所有datamapper gems后

gem install dm-core dm-do-adapter dm-migrations dm-sqlite-adapter dm-timestamps do_sqlite3

最后你可以开始玩了。在你的Sinatra应用程序中。

require 'rubygems'
require 'dm-core' # http://datamapper.org/getting-started

configure :development do

  DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/hohohodb.db")

end

#...

class User

  include DataMapper::Resource

  property :id,          Serial   # http://datamapper.org/docs/properties
  property :username,    String
  property :email,       String
  property :created_at,  DateTime
  property :updated_at,  DateTime

  validates_uniqueness_of, :email # http://datamapper.org/docs/validations
  has n, :groups

end
# Create or Upgrade all tables at once
DataMapper.auto_upgrade!

get '/'
    erb :index
end

__END__

@@index
...

希望这可以成为一个很好的起点#http://datamapper.org/docs/

玩得开心