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



我是轨道上的Ruby新手,我被一个大问题阻止了。我创建了一个用户表和一个课程表。如果用户是学生,则可以注册课程。所以我有我的连接表,它与我的用户的 id 和我的课程的 id courses_users。

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

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

这将调用我的方法创建:

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)

但我不知道如何提出在我看来的条件。

我不知道我是否足够精确,但如果有人知道如何解决它,那就太好了!

您必须在 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 %>
如果您的

@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 %>

祝你好运。

最新更新