Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails 3:需要澄清HABTM关系需要哪些控制器_Ruby On Rails_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails rails 3:需要澄清HABTM关系需要哪些控制器

Ruby on rails rails 3:需要澄清HABTM关系需要哪些控制器,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我已经阅读了很多文档,出于某种原因,我仍然不清楚这一点 我有以下设置,一个用户表、一个事件表和一个M2M表Events_Users,通过用户和事件上的HABTM关系定义。当用户在事件索引或显示页面上注册事件时,是否应转到为事件用户创建的控制器中的新操作?如果是这样,它是否应该转到仅用于将参数传递给Create操作的新操作?还是直接进入创建操作 如对最佳实践有任何澄清,将不胜感激 谢谢我认为有一种方法可以做到这一点: 我将接受事件,以使用户作为嵌套资源,方法如下: class Event <

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

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

如对最佳实践有任何澄清,将不胜感激


谢谢

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

我将接受事件,以使用户作为嵌套资源,方法如下:

class Event < ActiveRecord::Base
    has_many :users
    accepts_nested_attributes_for :events 
end
class事件
通过这种方式,您可以在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
class ApplicationController@event.users感谢您的回复,因此如果我将此功能添加到EventsController,当我需要从另一个对象引用它时会发生什么?我如何决定将它放在EventsController而不是UsersController上?甚至是唯一的控制器EventsUserController?这就是我感到困惑的地方,在用户控制器中定义此操作只会指示您定义名为/events/add_user_to_event的路由。你应该可以从任何你喜欢的地方呼叫这条路线。我认为您提到的备选方案只是一个偏好问题:您是从用户视图还是从事件视图添加事件?这取决于你。您甚至可以在UsersController下定义另一个操作调用add_event_to_user,其作用正好相反。那么,在这方面真的没有最佳实践吗?我觉得必须要提很多。