Я пытаюсь сделать следующее:
В любой момент у пользователя может быть 1 активный профиль. Этот активный профиль должен быть авторизован администратором, чтобы убедиться, что он соответствует правилам и нормам сайта. Когда пользователь редактирует свой профиль, его общедоступный профиль не изменяется, пока администратор не подпишет свои изменения. Если они вносят изменения в то время, когда их профиль просматривается, их изменения применяются к ожидающему профилю для просмотра и помещаются в конец очереди.
Мои модели выглядят примерно так:
class Profile < AR:B
belongs_to :user
end
class User < AR:B
has_many :profiles do
def active
...
end
def latest
end
end
def profile
self.profiles.active
end
end
Есть один маленький поворот ... пользователь не должен иметь возможности редактировать профиль напрямую, так как коллекция профилей не раскрывается. Вместо этого они редактируют своего пользователя, и там отображаются поля профиля.
Какой лучший способ справиться с этим? В настоящее время я использую:
accepts_nested_attributes_for :profiles
У пользователя, но это кажется довольно хакерским. В идеале большая часть этой логики должна жить в модели, но другая вещь, с которой я заигрываю, это использование презентатора.
Буду признателен за любые мысли, дайте мне знать, если вам нужна дополнительная информация в качестве комментария, и я соответствующим образом обновлю этот пост.