2014-06-28 199 views
0

所以我试图隐藏从普通用户的一些东西: 助手:无法看到的管理员帐户可见的管理员联系

def admin 
    User.find(:all, :conditions => { :email => ["[email protected]"] }) 
end 

查看:

<% if @active_user == admin %> 
    <td><%= link_to raw('<i class="icon-pencil icon-white"></i>'), edit_quiz_path(quiz), :class => 'btn btn-info' %></td> 
    <td><%= link_to raw('<i class="icon-trash icon-white"></i>'), quiz, method: :delete, data: { confirm: 'Pewien?' }, :class => 'btn btn-danger' %></td> 
<% end %> 

最后,我登录我的管理员帐户(电子邮件[email protected])并没有显示任何内容。

我使用的正常功能在DB找到用户?

+0

我想'找到(:全部,...)'会返回一个数组?只是:'.first'并尝试? – Surya

+0

我试过了,但它不工作... – djilt

+0

你试试:'User.find(:全部:条件=> {:电子邮件=> [ “[email protected]”]})。first'?那么'@active_user'的价值是什么? – Surya

回答

0

你可以重写这样的辅助方法,所以它会检查用户是管理员没有做查询到DB:

def admin?(user) 
    user.present? && user.email == '[email protected]' 
end 

更妙的是,在User类创建方法admin?

+1

点current_user',那么就不必在所有发送'user'对象。它可以是:'self.present? && self.email ==“管理员@ admin.com'' – Surya

+0

但是,当我尝试调用例如user.email ==‘管理@管理员’或user.admin ==真我得到了一个未定义的方法‘电子邮件’ – djilt

0

我改变@current_user == admincurrent_user.admin?,突然一切工作。所以最后这是错误的观点。