第3栏:需要澄清HABTM关系需要哪些控制器

时间:2012-04-02 15:05:45

标签: ruby-on-rails ruby-on-rails-3 activerecord

我已经阅读了很多文档,但由于某种原因,我仍然不清楚这一点。

我有以下设置,一个用户表,一个事件表,以及通过用户和事件上的HABTM关系定义的M2M表Events_Users。当用户在事件索引或显示页面上注册事件时,是否应该转到为Events_Users创建的控制器中的新操作?如果是这样,它应该转到仅用于将参数传递给Create操作的New操作吗?或者它应该直接进入创建行动?

非常感谢有关最佳做法的任何澄清!

由于

1 个答案:

答案 0 :(得分:0)

我认为有一种方法可以做到以下几点:

我会接受这个事件以这种方式将用户作为嵌套资源:

class Event < ActiveRecord::Base
    has_many :users
    accepts_nested_attributes_for :events 
end

这样您可以在EventsController中定义自定义操作,如下所示:

class ApplicationController < ActionController::Base
  def add_user_to_event
    @event = Event.find(params[:event])
    @user = User.find(params[:user])
    @event.users << @user
    @event.save
  end
end

在您的表单中,您可以将此操作与当前事件和用户作为参数进行link_to。