我有一个允许用户创建群组的网络应用。 在应用程序的首页上,任何用户都可以 - 无需注册 - 通过在文本输入列表中输入名称来创建组并将其他用户添加到组中。然后,创建该组的用户应该能够通过向每个名称添加电子邮件来邀请列表中的人员。我希望用户最初提供名称的原因以及稍后通过电子邮件提供ivitations的原因是我希望用户能够在注册之前试用该应用及其功能。
所以我有两个模型Group
和User
具有多对多关系。用户模型需要唯一的电子邮件地址,因此显然我无法为组中的每个用户创建新的用户对象。那么如何确保添加到组中的临时用户将映射到通过邀请创建的用户,或者受邀人员是否已在应用程序中拥有用户?
我正在考虑创建一个Profile
模型,该模型具有名称并属于一个组和一个用户,但每个用户都会拥有他/她所属的每个组的个人资料。我想不出另一个选择,但必须有一个......
答案 0 :(得分:0)
您需要使用工具将大脑中的数据信息转储到数据库模型中:)
http://wb.mysql.com/或http://www.sequelpro.com/
然后你需要将它抽象到你的应用程序中。
安装所有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/
玩得开心