【问题标题】:Right way to retrieve column from database for join model?从数据库中检索列以进行连接模型的正确方法?
【发布时间】:2013-06-01 05:38:29
【问题描述】:

我通过关联用户、程序和注册模型拥有 has_many。想法是用户可以将 Prog 添加到他的个人资料列表中,Prog 可以拒绝或接受来自用户的请求。

accept 方法如下所示:

注册#accept

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

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

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

如果这是真的,我的猜测是错过了一些基本的东西,而不是让我知道我应该关注什么才能让它发挥作用。谢谢。

【问题讨论】:

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


    【解决方案1】:

    如果我理解正确,您只需将两个参数(用于 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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-06
      • 2015-08-17
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      相关资源
      最近更新 更多