follow_id、follower_id、およびstatusの関係テーブルがあります。ユーザーモデルで「hasmanythrough」を使用して関連付けを作成しています。ユーザーには多くのフォロースルーがあり、逆の関係で多くのフォロースルーを行っています。ユーザーが別のユーザーをフォローすると、ステータスはデフォルトで「要求済み」になります。
したがって、ユーザーにはフォロワーのリストがあり、それぞれのステータスは「要求済み」です。
このフォロワーのリストに必要なのは、putメソッドまたはその関係を見つけてステータス文字列を「承認済み」に更新するフォームを含むlink_toです。とても簡単なようですが、私は何日も探していて、それを理解することができません。これは私がこれまでに持っているものです:
users_controllerで、ステータスを「要求済み」から「承認済み」に変更するアクション:
def activate
@user = User.find(params[:id])
params[:status] = {:status => 'approved'}
@user.status = params[:user][:status]
@user.save
render 'show_followers'
end
これはusers_controllerにあり、フォロワーを一覧表示します。
def followers
@title = "Followers"
@user = User.find(params[:id])
@users = @user.followers.paginate(:page => params[:page])
render 'show_followers'
end
これは、おそらくuser.rbモデルでは正しくないステータスを定義する場所です。
def status
Relationship.status.find_by_follower_id(self)
end
これは私がフォロワーを表示するページです:
<% unless @users.empty? %>
<% @users.each do |user| %>
<tr>
<td><%= image_tag user.avatar.url(:thumb) %></td>
<td><%= user.full_name %></td>
<td><%= user.company %></td>
<td><%= user.approval.status %></td>
<%end%>
<td><%= form_for @user, url: activate_user_path(@user), :html => { :method => :put } do |f| %>
<%= f.submit "approve" %>
<% end %>
</td>
</tr>
<%= will_paginate @users %>
<% end %>
関係テーブルのその文字列を「承認済み」に更新する方法を知っている人はいますか?