Logo Ruby on Rails - Rails to framework do tworzenia aplikacji WEB Opublikowany 2024-04-06 05:39:33 UTC przez: Redaktor

Atrybut "Current", czyli jak uzyskać dostęp z modelu do bieżącego użytkownika (current_user)

Od wersji Rails 5.2 możemy teraz dodać magiczny Singleton "Current", który działa jak globalny magazyn dostępny z dowolnego miejsca w aplikacji:

Zatem tworzymy model:

#app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  before_action :set_current_user, if: :user_signed_in?
  private def
    set_current_user Current.user = current_user
  end
end

 

#app/models/current.rb

class Current < ActiveSupport::CurrentAttributes

   attribute :user
end

Dzięki temu uzyskasz w widoku, bądż modelu dostęp do "current_user" używając "Current.user".

 

#static_pages/landing_page.html.erb

<%= Current.user.username %>

 

#app/models/post.rb

class Post < ApplicationRecord
  belongs_to :user, default: -> { Current.user }
  validates :title, presence: true
end
Powrót do Listy artykułów