管理员帐户不会显示该按钮。
迁移代码:
class DeviseCreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
## Database authenticatable
t.string :fname, null: false, default: ""
t.string :lname, null: false, default: ""
t.boolean :admin, default: false
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
...
型号代码:
def admin?
self.admin == true
end
这是视图的代码:
<% if current_user && current_user.admin? %>
<%= link_to 'New category', new_category_path %>
<% end %>
我从rails控制台设置管理员,如下所示:
a = User.find(1)
=> #<User id: 1, fname: "", lname: "", admin: false, email: "bobonnaaa@gmail.com", created_at: "2017-05-10 21:29:29", updated_at: "2017- 05-10 22:08:28">
a.admin = true
=> true
a
=> #<User id: 1, fname: "", lname: "", admin: true, email: "bobonnaaa@gmail.com", created_at: "2017-05-10 21:29:29", updated_at: "2017-05-10 22:08:28">
我做错了什么吗?请帮忙.....谢谢!
答案 0 :(得分:0)
在你的控制台中,
User.find(1).update_attribute(:admin, true) #you haven't save your user after assigning true to admin
那么你不需要admin?
方法,因为它是一个布尔数据类型,你可以直接使用like,
<% if current_user.try(:admin) %>
<%= link_to 'New category', new_category_path %>
<% end %>
答案 1 :(得分:0)
首先,不要定义admin?
方法。它已经存在。
然后,您需要在记录中保留更新,以便运行User.find(1).update(admin: true)
并在视图中:
<% if current_user&.admin %>
<%= link_to 'New category', new_category_path %>
<% end %>
答案 2 :(得分:0)
您是否在控制台中保存了记录?在使用您当前指定的方式分配a.save
后,您必须致电a.admin = true
。