Взаимодействие между моделями и контроллером в рельсах 3 с STI - PullRequest
0 голосов
/ 28 июня 2011

Я внедряю веб-решение с рельсами 3, где у пользователя есть список «Действия».Они могут быть в ожидании или проверке, и только администратор может проверить.

Два типичных действия:

1 / Сообщение о неверном изображении (если администратор подтвердит правильность, то изображение будет удалено, поэтому нам нужен его идентификатор) 2 / Отправка новой категории (еслиадминистратор проверяет, тогда категория будет добавлена)

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

Я планировал использовать в модели метод «onValidate», который либо удалял бы изображение (1 /), либо добавлял новую категорию (2 /)но это немного странно - добавить это в модель.

Не могли бы вы дать мне знать, как улучшить этот дизайн и переместить его в контроллер (ы)?

1 Ответ

0 голосов
/ 28 июня 2011

Если я понимаю, что вы описываете правильно, я не понимаю, почему вы думаете, что иметь этот код в модели - это плохо.Я полагаю, что ваши действия пользователя User_many, а действие имеет оценку.Когда действие подтверждается, состояние некоторых других объектов изменяется (изображение удаляется, добавляется категория ')

class DeletePictureAction < Action
  belongs_to :user
  belongs_to :picture

  def on_validate
     do_subclass_specific_stuff_to(picture)
     add_to_user_score(score)
  end
end

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

...