[RUBY] Fonction de notification simple dans Rails (uniquement lorsqu'elle est suivie)

Une fonction de notification simple dans Rails. (Uniquement lorsqu'il est suivi pour le moment)

Paramètres de routage

config/routes.rb


  resources :notifications, only: [:index]

Créer un contrôleur

$ rails g controller notifications

Créer un modèle

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

Paramètres de modèle et d'association

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'

Paramètres du contrôleur

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) #Partie Postscript
    redirect_to request.referer
  end

app/controllers/notifications_controller.rb


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

Afficher les paramètres (liste des notifications)

app/views/notifications/index.html


<h1>Remarquer</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>
Suivi par.
        </td>
        <td>
          <%= " (#{time_ago_in_words(notification.created_at)}Avant)" %>
        </td>
      </tr>
    </table>
  <% end %>
<% else %>
  <p>Pas de nouvelles</p>
<% end %>

Recommended Posts

Fonction de notification simple dans Rails (uniquement lorsqu'elle est suivie)
Implémenter une fonction de connexion simple dans Rails
[Rails] Fonction de notification
Implémenter la fonction d'application dans Rails
[Rails DM] Créons une fonction de notification lorsque DM est envoyé!
Ajoutez une fonction de recherche dans Rails.
Implémenter la fonction de téléchargement CSV dans Rails
[Rails] Un moyen simple d'implémenter une fonction d'auto-introduction dans votre profil
[Rails] Restrictions de fonction dans l'appareil (connexion / déconnexion)
[Retrait des rails] Créez une fonction de retrait simple avec des rails
[Rails] Stocker uniquement les éléments cochés dans la base de données
Sortie de Hello World dans la fonction principale simple de kotlin
Créer une fonction d'authentification dans l'application Rails à l'aide de devise
Erreur lors de l'installation de l'ensemble lors de l'exécution de rails neufs
Fonction de publication implémentée par communication asynchrone dans Rails
Mettre en œuvre la fonction de classement par étoiles en utilisant Raty dans Rails 6
[Rails] Mise en œuvre de "notifier la notification d'une manière ou d'une autre"
[Localisation japonaise] Rails i18n Affichage de la vue de localisation japonaise simplifiée uniquement
[Rails] Fonction de catégorie
Les rails suivent la fonction
Implémenter la fonction de recherche de publication dans l'application Rails (méthode where)
[Rails] Implémentez la fonction d'enregistrement / suppression de carte de crédit dans PAY.JP
[Ruby on Rails] Fonction de prévisualisation de l'image dans le fichier
Je souhaite définir une fonction dans la console Rails
Implémentation de calendrier simple de Rails Gem et branchement conditionnel