2010-02-23 1 views
0

У меня есть следующие домены: Пользователь, Роль, Компания. Пользователь и роль имеет отношение m: n, компания к пользователю имеет 1: m, а для пользователя - 1: 1. У меня проблема с определением домена пользователя. Вот оно:Как разрешить наличие 2 принадлежит одному домену

class User { 
static hasMany = [authorities: Role ] 
static belongsTo = [ Role , Company ] 
} 

Я хотел бы получить доступ к компании от пользователя, так что user.company даст мне компанию, в которой он назначен. Эта модификация не допускается:

static belongsTo = [ Role , company: Company ] 

Вот ошибка:

Unexpected node type: EXPR found when expecting type: LABELED_ARG at line: 9 column: 41. File: /Users/alfred/Applications/grails_projects/extramile/grails-app/domain/fbm/extramile/User.groovy @ line 9, column 41. 

Обратите внимание, что это не вариант, чтобы также сделать это:

static belongsTo = [ role: Role , company: Company ] 

С User-Role имеет т: n (также указана переменной «полномочий» уже).

Любое другое обходное решение? Благодарю.

+0

Почему ваш пользовательский класс принадлежит к роли вообще? – Blacktiger

+0

Я использую плагин acegi, и это их подход. Я просто расширяю область шаблона для пользователя – firnnauriel

ответ

0

Если я вас правильно понимаю, это должно работать:

class User { 
    static hasMany = [authorities: Role ] 
    static belongsTo = [ Role , Company ] 
    Company company 
} 

Я не могу не думать, что это странно, что ваш пользователь принадлежит к компании, а не наоборот, то есть удаление Компания удаляет все Пользователи этой компании. Во всяком случае, я не знаю вашего домена, поэтому я закрою!

+0

, да, это то, что я сделал после публикации моего вопроса, и это действительно работало как то, что я запланировал. я должен ответить на свой вопрос снова, но забыл сделать это вчера: p, но все же, спасибо за время :) – firnnauriel

+0

Кстати, что касается вашего беспокойства о домене, так это то, как работает «принадлежит Too»? Я добавил, что, поскольку я хотел бы разоблачить динамические методы (addTo * и removeFrom *). – firnnauriel

+0

Вам нужны только addTo и removeFrom для коллекций, чтобы GORM позаботился о настройке ref и каскадирования. Документы Grails дают более полное объяснение последствий использования ownTo. –