Моделирование данных группы и пользователей - PullRequest
0 голосов
/ 15 ноября 2010

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

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

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

1 Ответ

0 голосов
/ 16 ноября 2010

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

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

Тогда вам нужно включить это в ваше приложение.

http://datamapper.org/

После установки всех гемов datamapper

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

И, наконец, вы можете начать играть. В вашем приложении Синатра.

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/

веселиться

...