Как сохранить параметры формы на стороне hasMany отношения «один ко многим» в Grails

У меня есть отношение «один ко многим» между сообщением, которое имеет много комментариев доменного комментария. В моем gsp я показываю сообщение в блоге с его комментариями ниже, в конце есть форма, которую пользователь может заполнить, чтобы создать новый комментарий. Итак, я передаю параметры, заполненные в форме, контроллеру, чтобы сохранить новый комментарий, но я не уверен, должен ли я делать это в PostController (одна сторона) или в CommentController (много сторон). И во-вторых, как именно мне сохранить новый комментарий, я использовал это, CommentController:

def save() {
    def p = new Comment(params)
    p.save()
    redirect(action: 'blog', controller: 'Post', params: params)
}

Который в конце перенаправляется на PostController, где я отображаю представление сообщения со всем содержимым, включая новый комментарий, PostController

def blog()
{
    def post = Post.get(params.id)
    def entra = Post.findById(params.id)
    [post: post, articulos: entra]
}

person GeekyTrash    schedule 01.06.2013    source источник


Ответы (1)


"но я не уверен, должен ли я делать это в PostController (одна сторона) или в CommentController (много сторон)".

Контроллеры не являются объектами домена и не участвуют в отношениях между сообщениями и комментариями. Вы можете создать контроллер с именем PoopyCakaController и выполнять логику там. Это действительно не имеет значения. Учитывая эту информацию, на мой взгляд, я думаю, это зависит от того, могут ли несколько объектов иметь комментарии. Если сообщение владеет этими комментариями, а другие объекты не имеют комментариев, сделайте это в контроллере сообщений, в противном случае сделайте это в контроллере комментариев.

"И во-вторых, как именно мне сохранить новый комментарий, я использовал это, CommentController:"

Это работает для вас? Если да, то все в порядке. Если это не работает для вас, опубликуйте, в чем проблема, включая любые ошибки, которые вы получаете.

person James Kleeh    schedule 02.06.2013
comment
Спасибо, во-первых, сообщение фактически является владельцем комментариев, домен сообщения имеет свойство hasMany = [statements: Comment], а домен комментариев имеет свойство ownTo= [post: Post]. И во-вторых, он не работает, но ошибки не появляется, просто я проверил базу данных после того, как отправил комментарий, и ничего там не увидел. - person GeekyTrash; 04.06.2013