如果用户完成了一些任务,我想只公开用户的个人资料。
我已经设计了我的rails应用程序,现在如果有一个新帐户,即:localhost:3000/users/1
,localhost:3000/users/2
,localhost:3000/users/3
等......这些链接将起作用。
如果用户在用户数据库中填写了少量项目,我该如何将其全部设为私有。
由于
答案 0 :(得分: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 %>
答案 1 :(得分:0)
考虑这种方法:
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
列。