2017-05-10 15 views
0

ボタンは管理者アカウントには表示されません。ボタンは管理者には表示されません

移行コード:

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 %> 

私はこのようなレールのコンソールから管理者設定:

a = User.find(1) 
=> #<User id: 1, fname: "", lname: "", admin: false, email: "[email protected]", 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: "[email protected]", created_at: "2017-05-10 21:29:29", updated_at: "2017-05-10 22:08:28"> 

私は間違っていましたか?助けてください.....ありがとう!あなたのコンソールで

+0

'admin?'メソッドは必要ありません。単に 'current_user.admin? 'を使用してください。 –

答えて

0

コンソールでレコードを保存しました:

次に、あなたはとてもUser.find(1).update(admin: true)

とビューでの実行、レコードの更新を永続化する必要がありますか?現在割り当てられている方法でa.admin = trueを割り当てた後、a.saveに電話しなければなりません。

+0

Worked !!おかげで束 – JohnnyDevv

+0

素晴らしい。正解として選択してください。 – hashrocket

+0

また、fnameフィールドとlnameフィールドは、レールコンソール内の空文字列なので、ブラウザに表示されません。私は何をしますか? – JohnnyDevv

0

User.find(1).update_attribute(:admin, true) #you haven't save your user after assigning true to admin 

それがブールデータ型であるとして、あなたはadmin?方法を必要としない、あなたは直接のように使用することができ、

<% if current_user.try(:admin) %> 
    <%= link_to 'New category', new_category_path %> 
<% end %> 
+0

ありがとう!!私は今スコープを得る – JohnnyDevv

0

まず定義していません方法はadmin?です。それはすでに存在します。

<% if current_user&.admin %> 
    <%= link_to 'New category', new_category_path %> 
<% end %> 
関連する問題