Ассоциация DataMapper - группы и члены - PullRequest
0 голосов
/ 27 марта 2012

Что будет эквивалентно следующему коду C # в Ruby (DataMapper ORM)?

class User{
    public long Id {get;set;}
}

class Group{
    public long Id {get;set;}
    public long Owner {get;set;} //User.Id
    public DbSet<User> Members {get;set;}
}

Другими словами, я пытаюсь смоделировать группу с владельцем и участниками.Я пришел к следующему, но, похоже, не могу заставить ассоциацию работать правильно.

class User
    include DataMapper::Resource
    property :id, Serial
    has n, :groups
end

class Group
    include DataMapper::Resource
    property :id, Serial
    belongs_to :owner, 'User' 
    has n, :members, 'User' #something goofy going on here!
end

Вышеприведенное, кажется, вынуждает пользователя принадлежать к группе, но я хочу, чтобы это было необязательно.

И FWIW, это SQL, который я пытаюсь смоделировать

create table users(
  id integer primary key autoincrement
, name text
);


create table groups(
  id integer primary key autoincrement
, name text unique
);


create table group_users(  
  group_id integer
, user_id integer
, role char check (role in ('u','o','a')) default 'u'
, primary key(group_id, user_id, role)
, foreign key (group_id) references groups(id)
, foreign key (user_id) references users(id)
);

TIA!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...