ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina
1 Créer un modèle 2 Modifier le modèle <-C'est le plus difficile 3 Créer un contrôleur 4 Fixer le routage 5 Créer une vue
Cette fois, nous avons créé un modèle de relation
Terminal
$ rails g model Relationship follower_id:integer followed_id:integer
Terminal
$ rails db:migrate
<détails>
app/models/relationship.rb
belongs_to :follower, class_name: "User"
belongs_to :followed, class_name: "User"
<détails>
app/models/user.rb
has_many :follower, class_name: "Relationship", foreign_key: "follower_id", dependent: :destroy #Obtenez suivre
has_many :followed, class_name: "Relationship", foreign_key: "followed_id", dependent: :destroy #Obtenez des abonnés
has_many :following_user, through: :follower, source: :followed #La personne que vous suivez
has_many :follower_user, through: :followed, source: :follower #Les gens qui me suivent
#Suivez l'utilisateur et utilisez-le plus tard dans le contrôleur.
def follow(user_id)
follower.create(followed_id: user_id)
end
#Arrêtez l'utilisateur et utilisez-le plus tard dans le contrôleur.
def unfollow(user_id)
follower.find_by(followed_id: user_id).destroy
end
#Renvoie vrai si suivant, sera utilisé ultérieurement dans la vue.
def following?(user)
following_user.include?(user)
end
Terminal
$ rails g controller relationships
rb:app/controllers/relationships.controller.rb
def create
current_user.follow(params[:user_id])
redirect_to request.referer
end
def destroy
current_user.unfollow(params[:user_id])
redirect_to request.referer
end
Cette fois dans app / views / homes / mypage.html.erb Décrit à l'emplacement suivant pour afficher une liste d'adeptes et d'adeptes.
rb:app/controllers/homes.controller.rb
def mypage
@following_users = current_user.following_user
@follower_users = current_user.follower_user
end
rb:config.routes.rb
resources :users do
resource :relationships, only: [:create, :destroy]
end
erb:app/views/show.html.erb
<% if current_user != user %>
<% if current_user.following?(@user) %>
<%= link_to 'Se désabonner', user_relationships_path(@user.id), method: :delete %>
<% else %>
<%= link_to 'Suivre', user_relationships_path(@user.id), method: :POST %>
<% end %>
<% end %>
erb:app/views/homes/mypage.html.erb
<div>
Nombre d'abonnés:<%= current_user.follower.count %>
Nombre d'abonnés:<%= current_user.followed.count %>
</div><br><br>
<table>
<caption>Suivant</caption>
<thead>
<tr>
<th>Nom d'utilisateur</th>
<th></th>
</tr>
</thead>
<tbody>
<% @following_users.each do |following_user| %>
<tr>
<td><%= following_user.name %></td>
<td><%= link_to 'Se désabonner', user_relationships_path(following_user.id), method: :delete %></td>
</tr>
<% end %>
</tbody>
</table><br><br>
<table>
<caption>Disciple</caption>
<thead>
<tr>
<th>Nom du suiveur</th>
</tr>
</thead>
<tbody>
<% @follower_users.each do |follower_user| %>
<tr>
<td><%= follower_user.name %></td>
</tr>
<% end %>
</tbody>
</table>
Recommended Posts