Как я могу избежать нескольких ответов одного и того же пользователя? - PullRequest
2 голосов
/ 01 июня 2009

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

Как я могу это сделать? И где лучше всего разместить этот код (т.е. контроллер, модель)?

Ответы [ 5 ]

5 голосов
/ 01 июня 2009

Вам понадобится две проверки, одна, когда вопросы загружаются, чтобы увидеть, есть ли ответ от этого пользователя. Если это так, не предоставляйте ему форму ответа.

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

1 голос
/ 01 июня 2009

У вас есть question_id и user_id, так в чем же проблема?

1 голос
/ 01 июня 2009

Вы хотите, чтобы валидация validates_uniqueness_of в вашей модели предшествовала правилу - http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#M002110

Я бы также согласился с Олафуром: вам не следует давать пользователю кнопку для добавления ответа, если он уже добавлен.

1 голос
/ 01 июня 2009

Получить идентификатор пользователя, получить идентификатор вопроса. Проверьте, есть ли ответ от идентификатора пользователя, который соответствует идентификатору вопроса. Если он существует, скажите НЕТ! Если он не существует, тогда отправьте ответ ...

0 голосов
/ 02 июня 2009

Я наконец написал этот код:


# Reply model
validates_uniqueness_of :user_id, :scope => :question_id

# Helper method
def user_has_replied(user, question)
  Reply.find( :first, :conditions => {:user_id => user.id, :question_id => question.id} )
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...