Rails检查数据库中是否存在关系

时间:2017-04-11 14:06:15

标签: ruby-on-rails

我是新手上的ruby on rails并且我遇到了一个大问题。我创建了一个User表和一个Course表。如果用户是学生,则可以注册课程。所以我的连接表是courses_users,其中包含我的用户ID和我课程的ID。

在视图中,我显示了我的所有课程,并且每个课程都有一个“注册”按钮:

<%= button_to 'register', modules_path, method: :post, params: {course_id: course.id, user_id: current_user.id} %>

这将调用我的方法Create:

def create
    @course_user = CoursesUser.new(course_params)
    @course_user.save
    redirect_to modules_path
end

所以这将创建我当前用户和我选择的course_id之间的关系。

我的问题是我应该如何捕捉我的关系,如果这个已经存在,它将显示另一个从该课程取消注册的按钮(类似于关注/取消关注)

我试过这个:

@course_user = CoursesUser.where(user_id: current_user.id)

但我不知道如何在我看来制造一个条件。

我不知道我是否确切想要,但如果有人知道如何解决它,那将是非常好的!

2 个答案:

答案 0 :(得分:0)

您必须在user.rb

中拥有关联
User has_many :courses

现在您可以获取用户课程列表

<% if current_user.course_ids.include?(course.id) %>
  <%= button_to 'unregister', ....  %>
<% else %>
  <%= button_to 'register', modules_path, method: :post, params: {course_id: course.id, user_id: current_user.id} %>
<% end %>

答案 1 :(得分:0)

如果您的@course_user实例返回您期望的值 然后你的观点看起来像

<% if @course_user.blank? %>
 <%= button_to 'register', modules_path, method: :post, params:  course_id: course.id, user_id: current_user.id} %>
<% else %>
 #your unregister/unfollow link
<% end %>
祝你好运。