[RUBY] Einfache Benachrichtigungsfunktion in Rails (nur wenn befolgt)

Eine einfache Benachrichtigungsfunktion in Rails. (Nur wenn vorerst gefolgt)

Routing-Einstellungen

config/routes.rb


  resources :notifications, only: [:index]

Controller erstellen

$ rails g controller notifications

Modell erstellen

$ rails g model Notification visitor_id:integer visited_id:integer
$ rails db:migrate

Modell- und Zuordnungseinstellungen

app/models/user.rb


  has_many :active_notifications, class_name: "Notification", foreign_key: "visitor_id", dependent: :destroy
  has_many :passive_notifications, class_name: "Notification", foreign_key: "visited_id", dependent: :destroy

  def create_notification_follow!(current_user)
    temp = Notification.where(["visitor_id = ? and visited_id = ? ",current_user.id, id])
    if temp.blank?
      notification = current_user.active_notifications.new(visited_id: id)
      notification.save if notification.valid?
    end
  end

app/models/notification.rb


  belongs_to :visitor, class_name: 'User', foreign_key: 'visitor_id'
  belongs_to :visited, class_name: 'User', foreign_key: 'visited_id'

Controller-Einstellungen

app/controllers/relationships_controller.rb


  def create
    @user = User.find(params[:user_id])
    current_user.follow(params[:user_id])
    @user.create_notification_follow!(current_user) #Postscript-Teil
    redirect_to request.referer
  end

app/controllers/notifications_controller.rb


  def index
    @notifications = current_user.passive_notifications.order(created_at: :DESC)
  end

Einstellungen anzeigen (Benachrichtigungsliste)

app/views/notifications/index.html


<h1>Beachten</h1>
<% if @notifications.exists? %>
  <% @notifications.each do |notification| %>
    <table>
      <tr>
        <td>
          <%= attachment_image_tag notification.visitor, :image, size: "50x50" %>
        </td>
        <td>
          <%= link_to user_path(notification.visitor) do %>
            <%= notification.visitor.name %>
          <% end %>
        </td>
        <td>
Gefolgt von.
        </td>
        <td>
          <%= " (#{time_ago_in_words(notification.created_at)}Vor)" %>
        </td>
      </tr>
    </table>
  <% end %>
<% else %>
  <p>Keine Neuigkeiten</p>
<% end %>

Recommended Posts

Einfache Benachrichtigungsfunktion in Rails (nur wenn befolgt)
Implementieren Sie eine einfache Anmeldefunktion in Rails
[Rails] Benachrichtigungsfunktion
Implementieren Sie die Anwendungsfunktion in Rails
[Rails DM] Erstellen wir eine Benachrichtigungsfunktion, wenn DM gesendet wird!
Fügen Sie eine Suchfunktion in Rails hinzu.
Implementieren Sie die CSV-Download-Funktion in Rails
[Rails] Eine einfache Möglichkeit, eine Selbsteinführungsfunktion in Ihrem Profil zu implementieren
[Rails] Funktionseinschränkungen im Gerät (Login / Logout)
[Schienenentnahme] Erstellen Sie eine einfache Entnahmefunktion mit Schienen
[Schienen] Speichern Sie nur markierte Elemente in der Datenbank
Geben Sie Hello World in der einfachen Hauptfunktion von kotlin aus
Erstellen Sie die Authentifizierungsfunktion in der Rails-Anwendung mit devise
Fehler bei der Bundle-Installation beim Ausführen neuer Schienen
Buchungsfunktion implementiert durch asynchrone Kommunikation in Rails
Implementieren Sie die Sternebewertungsfunktion mit Raty in Rails 6
[Rails] Implementierung von "Benachrichtigung auf irgendeine Weise benachrichtigen"
[Japanische Lokalisierung] i18n-Schienen Nur einfache Anzeige der japanischen Lokalisierungsansicht
[Schienen] Kategoriefunktion
Schienen folgen der Funktion
Implementieren Sie die Nachsuchfunktion in der Rails-Anwendung (where-Methode).
[Rails] Implementieren Sie die Registrierungs- / Löschfunktion für Kreditkarten in PAY.JP
[Ruby on Rails] Post-Bildvorschau-Funktion in Refile
Ich möchte eine Funktion in der Rails Console definieren
Kalenderimplementierung und bedingte Verzweigung im einfachen Kalender von Rails Gem