Я работаю с DataMapper и Sinatra, чтобы создать простое приложение. Вот структура:
В приложении есть Аккаунты. У каждой учетной записи есть пользователи и кампании. У каждого пользователя есть комментарии, которые должны быть связаны с определенной кампанией.
Комментарии в идеале должны иметь идентификатор пользователя и идентификатор кампании, чтобы связать их обоих.
Как я могу связать 2 вместе? Вот код, который у меня есть, который не работает:
class Account
include DataMapper::Resource
property :id, Serial
property :mc_username, String, :required => true
property :mc_user_id, String, :required => true
property :mc_api_key, String, :required => true
property :created_at, DateTime
property :updated_at, DateTime
has n, :users
has n, :campaigns
end
class User
include DataMapper::Resource
property :id, Serial
property :name, String, :required => true
property :email, String, :required => true
property :is_organizer, Integer
property :created_at, DateTime
property :updated_at, DateTime
belongs_to :account, :key => true
has n, :comments
end
class Campaign
include DataMapper::Resource
belongs_to :mailchimpaccount, :key => true
has n, :comments
property :id, Serial
property :cid, String
property :name, String
property :current_revision, Integer
property :share_url, Text, :required => true
property :password, String
property :created_at, DateTime
property :updated_at, DateTime
end
class Comment
include DataMapper::Resource
belongs_to :campaign, :key => true
belongs_to :user, :key => true
property :id, Serial
property :at_revision, Integer
property :content, Text
property :created_at, DateTime
end
С этим кодом я не могу сохранить комментарий, так как не могу понять, как связать его с кампанией и пользователем одновременно. Я не могу понять, стоит ли вообще пытаться связать их с помощью DataMapper.
Я хотел бы знать, правильный ли этот код, как я могу создать комментарий, связанный с обоими. Если нет, то какая структура и ассоциации были бы оптимальными для этого сценария?
Большое спасибо за помощь!