【问题标题】:How to allow users to make their profiles private or public?如何允许用户将他们的个人资料设为私有或公开?
【发布时间】:2013-03-25 03:47:36
【问题描述】:

我有一个 Rails 3 应用程序,这是我正在尝试解决的问题。

我已经有一个用户必须登录才能使用的应用,但公众可以查看他们的个人资料。他们个人资料的网址是http://myapp.com/users/username

我想在他们的设置中添加一项功能,他们可以将他们的个人资料设置为公开或私人。它已经是公开的,因为每个人都可以看到它,但是我如何允许私有功能?

基本上,我只是希望这部分 (http://myapp.com/users/username) 能够由用户设置为私有或公共。

【问题讨论】:

  • 那么您想要某种包含他们信息的“我的帐户”页面吗?
  • “私人”是什么意思?当有人试图访问私人页面时,具体来说应该发生什么?格式正确的错误页面? HTTP 404? 403? 401?一般来说,在数据库中保存一个变量,当有人试图访问 URL 时,检查数据库并发送适当的响应。
  • 不,他们已经有个人资料在链接myapp.com/users/username 中显示他们的帖子。即使没有登录,每个人都可以查看它,所以我想允许用户选择将他们的个人资料设置为私人。当它设置为私有并且有人试图访问它时,它会显示说(“您尚未登录。请在此处登录。”)
  • 然后在您的个人资料的控制器中添加类似redirect_to :action => "show" unless currect_user.logged?的smth。
  • 正如@Phrogz 已经建议的那样,您将使用布尔值public_profile 字段扩展User 表。

标签: ruby-on-rails ruby authentication user-defined-functions


【解决方案1】:

为公共/私有布尔值添加一个新列:

rails g migration AddIs_publicToUsers is_public:boolean
rake db:migrate

在您的视图/users/show.html.erb(或您的用户页面所在的任何位置)添加:

<% if current_user.is_public %>
  *Paste in display html/erb for your user show page.
<% else %>
  Sorry. Is Private Profile. 
<% end %>

您还必须使属性可访问,在 models/user.rb 中用于 rails 3 及以下,或在 controller/users_controller.rb 中用于 rails 4。

轨道 3:

attr_accessible :is_public

导轨 4:

def user_params
  params.require(:user).permit(:is_public)
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-20
    • 2017-11-10
    • 2020-11-04
    • 2015-10-08
    • 2016-01-13
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多