Rails 3, ActiveRecord, обнаружение изменений в ассоциации has_many - PullRequest
0 голосов
/ 13 июля 2011

У меня есть следующие ассоциации

class User < ActiveRecord::base 
  has_many :memberships
end

Что я хотел бы сделать, это обнаружить в действии users_controller обновление, что некоторые членства были добавлены или удалены из user.memberships.

Есть идеи или предложения о том, как это реализовать?

Спасибо за любую помощь.

РЕДАКТИРОВАТЬ: мои извинения, если вопрос не был ясным.

Пользователи связаны друг с другом отношениями родитель-ребенок. Эти отношения реализуются через членство в Семейном кругу.

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

Ответы [ 3 ]

1 голос
/ 15 июля 2011

Мои извинения, если контекст был не очень ясен.Итак, сначала немного уточнения контекста:

Пользователи связаны друг с другом отношениями родитель-ребенок.Эти отношения реализуются через членство в Семейном кругу.

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

Теперь решение:
Я решил это путем добавления after_saveи before_destroy методы для модели членства, чтобы проверить, является ли пользователь дочерним, и в этом случае создать / уничтожить членство для родителей.Есть несколько хитрых крайних случаев, которые мне пришлось решить, но код, кажется, работает нормально.

Последнее замечание: моей первой идеей было как-то определить в пользовательском контроллере, что членство было добавлено или удалено, а затемпроверить, был ли пользователь дочерним пользователем ....

1 голос
/ 06 ноября 2014

Я знаю, что опаздываю на вечеринку здесь, но для будущих путешественников ActiveRecord выставляет before_add, after_add, before_remove и after_remove хуки именно для этих сценариев.

0 голосов
/ 13 июля 2011

добавил как? Со времени последнего визита?

Если это так, создайте логический столбец «read», который обновляется при посещении.

В противном случае, уточните. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...