Я новичок в RoR, и в этом приложении я хочу сделать личные сообщения общедоступными, как только пользователи отменят свои платные услуги. Другими словами, личные сообщения пользователя станут общедоступными после того, как пользователь понизит уровень учетной записи до стандартного.
Ниже показано, как я подхожу к этому сценарию:
ПодпискиКонтроллер:
def downgrade
subscription = current_user.subscription
if subscription.delete
downgrade_user_to_standard
current_user_downgrade_posts
flash[:success] = "Sorry to see you go."
redirect_to user_path(current_user)
else
flash[:error] = "Can't downgrade at this moment."
redirect_to root_path
end
end
Контроллер приложений:
protected
def downgrade_user_to_standard
current_user.update_attributes(role: "standard")
end
def current_user_downgrade_posts
privateposts = current_user.posts.where(private: true)
privateposts.each do |privatepost|
privatepost.posts_update_attributes(private: false)
end
end
Когда я протестировал его на сервере и консоли, я обнаружил, что созданный ранее личный пост не стал общедоступным, как ожидалось, после понижения уровня премиум-пользователя до стандартного уровня. Поскольку при запуске сервера rails не было сообщения об ошибке, может ли кто-нибудь указать мне, какие шаги я пропустил и как я могу заставить его работать?
Заранее спасибо!