2010-11-15 17 views
0

我有一個Web應用程序,可讓用戶創建組。 在應用程序的首頁,任何用戶都可以 - 無需註冊 - 創建一個組,並將其他用戶添加到該組中,方法是在文本輸入列表中輸入名稱。然後,創建該組的用戶應該能夠通過向每個名稱添加電子郵件來邀請列表中的人員。我希望用戶最初提供姓名和通過電子郵件發送電子郵件的原因是,我希望用戶能夠在註冊前試用應用程序及其功能。組和用戶的數據建模

所以我有兩個模型GroupUser與多對多的關係。用戶模型需要一個唯一的電子郵件地址,所以顯然我不能爲組中的每個用戶創建新的用戶對象。那麼如何確保添加到組中的臨時用戶將映射到通過邀請創建的用戶,或者如果被邀請的人在應用中已經有用戶?

我正在考慮創建一個名稱爲Profile的模型,該模型將屬於一個組和一個用戶,但這樣每個用戶將擁有他/她所屬的每個組的配置文件。我想不出另一種選擇,但必須有一個...

回答

0

你需要工具來轉儲從你的大腦數據庫模型:) DAT信息

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

然後,你需要將其抽象到您的應用程序中。

http://datamapper.org/

後安裝所有的DataMapper寶石

創業板安裝DM-核心DM-DO適配器DM-遷移DM-sqlite的適配器DM-時間戳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/

樂趣

+0

這當然是一個很好的出發點:)我想我應該提到我的造型只是需要幫助。我的大腦對數據庫的轉換能力相當好,但我的大腦根本無法弄清楚如何將用戶分組 - 首先只使用一個名字 - 然後通過電子郵件邀請他們 - 並且讓舒爾映射任何現有的用戶或被邀請的用戶兩個不同的小組在同一時間到達正確的小組。是否有意義? – schwift 2010-11-16 06:37:15

+0

:)好的,所以你需要從某個地方開始,一步一步模擬你的模式。看看這個示例http://stensi.com/datamapper/pages/schema.html它是原始的SQL。玩的開心 – include 2010-11-17 22:28:27

相關問題