如果用户完成了一些任务,我只想公开用户的个人资料。
我已经在我的 Rails 应用程序中设计了设置,现在如果有一个新帐户,即:、、、localhost:3000/users/1
等......这些链接将起作用。localhost:3000/users/2
localhost:3000/users/3
在用户在用户数据库中填写一些项目之前,如何将其全部设为私有。
谢谢
如果用户完成了一些任务,我只想公开用户的个人资料。
我已经在我的 Rails 应用程序中设计了设置,现在如果有一个新帐户,即:、、、localhost:3000/users/1
等......这些链接将起作用。localhost:3000/users/2
localhost:3000/users/3
在用户在用户数据库中填写一些项目之前,如何将其全部设为私有。
谢谢
public
,默认值false
位于用户表中public
属性设置为在用户模型中可访问public
用户的属性为true
show.html.erb
用户,您可以使用一些代码显示两个不同的内容,例如<%- if @user.public %>
<p>Show content for public profile</p>
<%- else %>
<p>This profile is private</p>
<% end %>
考虑这种方法:
class User < ActiveRecord::Base
MIN_TASK_COUNT = 5 # Minimum tasks for profile to be public
has_many :tasks
def public?
tasks_count >= MIN_TASK_COUNT
end
end
class Task < ActiveRecord::Base
belongs_to :user, counter_cache: true
end
然后在你的控制器中:
class UsersController < ApplicationController
def show
@user = User.find(params[:id)
if @user.public?
render :public_profile, user: @user
else
render :private_profile, user: @user
end
end
end
请注意,您应该创建app/views/users/_private_profile.html.erb
和app/views/users/_public_profile.html.erb
部分并向用户表添加一tasks_count
列。