Моделирование данных группы и пользователей

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

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

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

1 ответ

Решение

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

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

Затем вам необходимо включить это в ваше приложение.

http://datamapper.org/

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

gem install dm-core dm-do-adapter dm-миграции dm-sqlite-адаптер 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/

повеселись

Другие вопросы по тегам