如何通过插入外键允许用户加入模型

时间:2015-07-24 08:12:10

标签: ruby-on-rails

使用带有Devise身份验证的rails 4。

我在用户和挑战之间存在一对多的关系。一个用户可能面临许多挑战。 challenge表中有一个外键user_id。目前,此FK仅由创建挑战的用户填充。但是我希望其他用户能够加入挑战。这必须非常简单,因为我确定它只涉及插入想要加入挑战表的用户的外键。但是,我不确定如何做到这一点。

我想这涉及用户按下“加入”按钮。挑战视图中的按钮。然后将其路由到质询控制器中的连接操作(这就像更新操作?是正确的),它将传递当前用户ID和我想要加入ID的质询。然后,这将更新数据库

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<div id="menu" style="
    height: 50px;
    width: 100%;
    BACKGROUND: rgb(57,65,101);
    border-radius: 5px;
">
  <div id="dashBoard" class="menu">DashBoard<span class="spanHighlight"></span>
  </div>
  <div id="addApp" class="menu selected">Add Application<span class="spanHighlight"></span>
  </div>
  <div id="linkApp" class="menu">Link Applications<span class="spanHighlight"></span>
  </div>
</div>

1 个答案:

答案 0 :(得分:0)

  

我想这涉及用户按下“加入”按钮。按钮在挑战中   视图。然后,这将被路由到挑战中的联接操作   控制器(这就像更新动作?是正确的)和它   会传递当前用户ID和我要加入ID的挑战。   然后,这将更新数据库

这是正确的假设,但您无法在user_id中插入challenges,您必须创建名为UserChallenge的新模型并且:

class User < ActiveRecord::Base
  ...
  has_many :challenges # you old association, created?
  has_many :user_challenges
  has_many :joined_challenges,  # list of all joined challenges
    through: :user_challenges,
    class_name: "Challenge"
  ...
end


class Challenged < ActiveRecord::Base
  ...
  belongs_to :user # you old association
  has_many :user_challenges
  has_many :joined_users, # list of all joined users
    through: :user_challenges,
    class_name: "User"
  ...
end


class UserChallenge < ActiveRecord::Base
  ...
  belongs_to :user
  belongs_to :challenge
  ...
end