我有一个包含followed_id、follower_id 和状态的关系表。我在我的用户模型中使用“多次通过”来创建关联。用户有很多关注,并且通过反向关系关注很多。当用户关注另一个用户时,状态默认为“已请求”。
因此,用户有一个关注者列表,每个关注者的状态为“已请求”。
我在这个追随者列表中需要的是一个带有 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 %>
有谁知道我如何才能将关系表中的字符串更新为“已批准”?