2010-11-15 3 views
0

У меня есть веб-приложение, которое позволяет пользователям создавать группы. На первой странице приложения любой пользователь может - без регистрации - создать группу и добавить других пользователей в группу, введя имена в список текстовых входов. Затем пользователь, создавший группу, должен пригласить людей в список, добавив электронное письмо к каждому из имен. Причина, по которой я хочу, чтобы пользователь сначала предоставлял только имена, а ivitations по электронной почте, - это то, что я хочу, чтобы пользователь мог попробовать приложение и его функциональность до регистрации.Моделирование данных группы и пользователей

Так что у меня есть две модели: Group и User со многими отношениями. Для модели пользователя требуется уникальный адрес электронной почты, поэтому я не могу создавать новые пользовательские объекты для каждого пользователя в группе. Итак, как бы убедиться, что временные пользователи, добавленные в группы, будут сопоставлены пользователям, созданным с помощью приглашения, или если приглашенный пользователь уже имеет пользователя в приложении?

Я думал о создании модели Profile, которая имела бы имя и принадлежность к группе и пользователю, но таким образом каждый пользователь имел бы профиль для каждой из групп, к которым он принадлежит. Я не могу думать о других альтернативах, но должен быть один ...

ответ

0

Вы нужны инструменты, чтобы сбросить Даты информации от вашего мозга к базе данных модели :)

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

Затем вам нужно абстрагировать это в вашем приложении.

http://datamapper.org/

После установки всех DataMapper драгоценных камней

камня установить де одножильную дй-д-адаптер ой-Миграцию дх-SQLite-адаптер де-временные метки 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

Это, конечно, хорошая отправная точка :) Я думаю, что я хотел бы упомянуть, мне просто нужно помочь с моделированием. Мое мозг к возможностям преобразования базы данных довольно хорошо, но мой мозг просто не может понять, как помещать пользователей в группы - сначала использовать только имя, а затем приглашать их по электронной почте, и сделать shure для сопоставления любых существующих пользователей или пользователей, две разные группы одновременно с правыми группами. Имеет ли это смысл? – schwift

+0

:) ОК, поэтому вам нужно начать с чего-то и пошаговую модель вашей схемы. Проверьте этот образец http://stensi.com/datamapper/pages/schema.html, это сырой sql. повеселись – include

Смежные вопросы