Моделирование данных группы и пользователей
У меня есть веб-приложение, которое позволяет пользователям создавать группы. На главной странице приложения любой пользователь может - без регистрации - создать группу и добавить других пользователей в группу, введя имена в список ввода текста. Предполагается, что пользователь, создавший группу, сможет пригласить людей из списка, добавив электронное письмо к каждому из имен. Причина, по которой я хочу, чтобы пользователь первоначально указывал только имена, а позже - по электронной почте, заключается в том, что я хочу, чтобы пользователь мог опробовать приложение и его функциональные возможности до регистрации.
Итак, у меня есть две модели Group
а также User
с отношениями многих ко многим. Модель пользователя требует уникальный адрес электронной почты, поэтому, очевидно, я не могу создавать новые объекты пользователя для каждого пользователя в группе. Итак, как можно убедиться, что временные пользователи, добавленные в группы, будут сопоставлены с пользователями, созданными посредством приглашения, или если у приглашенного лица уже есть пользователь в приложении?
Я думал о создании Profile
модель, которая будет иметь имя и принадлежать группе и пользователю, но таким образом у каждого пользователя будет профиль для каждой группы, к которой он / она принадлежит. Я не могу придумать другую альтернативу, но она должна быть...
1 ответ
Вам нужны инструменты для передачи информации о данных из вашего мозга в модель базы данных:)
http://wb.mysql.com/ или http://www.sequelpro.com/
Затем вам необходимо включить это в ваше приложение.
После установки всех гемов 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/
повеселись