从连接模型的数据库中检索列的正确方法?

时间:2013-06-01 05:38:30

标签: ruby-on-rails ruby-on-rails-3 activerecord has-many-through

我通过关联User,Prog和Enrollment模型得到了has_many。想法是用户可以将Prog添加到他的个人资料列表中,并且Prog可以拒绝或接受来自用户的请求。

这就是接受方法的样子:

入学#接受

def accept
  @enrollment = Enrollment.find_by_user_id(params[:id])
  @enrollment.status = "accepted"
  @enrollment.save!
  ....
end

我不明白为什么这不对,如果我在accept方法中正确理解,则注册必须得到user.id和prog.id才能从数据库中检索数据。因此,user.id与link_to一起传递,但是如何显示prog.id来帮助我找到需要的注册列?

  <% @prog.users.each do |user| %> 
  <%= link_to "#{user.email} accept", controller: "/enrollments", action: "accept", id: user.id, method: "post" %>
  <% end %>

我的猜测,如果这是真的,就会错过一些基本的东西,而不是让我知道我应该集中精力让它发挥作用。谢谢。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您只需要将两个参数(对于user_id和prog_id)传递给链接,并使用这两个参数查找注册。 视图:

<%= link_to "#{user.email} accept", controller: :enrollments, action: :accept, user_id: user.id, prog_id: @prog.id, method: :post %>

在控制器中:

@enrollment = Enrollment.find_by_user_id_and_prog_id params[:user_id], params[:prog_id]