Как использовать становится в Rails - PullRequest
4 голосов
/ 01 апреля 2010

У меня есть класс Post и класс Comment. У меня есть объект post, и я хочу преобразовать его в объект Comment. Я прошел через Rails api и обнаружил, что становится (класс). Пока что нет связи между постом и комментарием Итак, я попробовал

@post.becomes(Comment)

, но становится методом, не может быть найдено для @post объекта. Я что-то упустил?

Ответы [ 3 ]

4 голосов
/ 03 апреля 2010

Поместите методы, которые вы хотите, чтобы обе модели использовали в модуле.Затем включите этот модуль в обе модели.

4 голосов
/ 22 ноября 2012

Обратите внимание, что становится , возвращает новый объект, но не изменяет существующий объект.Вы должны выполнить назначение самостоятельно

@post = @post.becomes(Comment)

См. Документацию ActiveRecord :: Persistence # становится

0 голосов
/ 01 апреля 2010

Я предполагаю, что вы говорите о классах, производных от ActiveRecord :: Base. В этом случае, я думаю, у вас есть два варианта, если вы действительно хотите конвертировать посты в комментарии (что мне немного странно):

  • Вы можете иметь только один класс (например, Entry) с атрибутом, который помечает его как пост или комментарий, который вы могли бы установить соответствующим образом
  • Вы можете создать и сохранить новый объект комментария, содержащий текст объекта публикации, а затем удалить объект публикации.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...