我应该把它放在我的控制器或型号中吗?

时间:2011-06-08 03:12:19

标签: ruby-on-rails

我目前在我的控制器中有我的参加方法。我的问题是如何知道是否将其放入我的事件或用户模型与我的事件控制器?我还要添加另一个方法remove_attend,它将与参加者相反。我在什么时候将这些方法放入模型中?

 def attend
    @event = Event.find(params[:id])
    if @event.users.include?(current_user)
      flash[:error] = "You're already attending this event."
    else
      current_user.events << @event
      flash[:success] = "Attending event!"
    end
    redirect_to @event
  end

3 个答案:

答案 0 :(得分:3)

它属于事件控制器。 Flash消息或重定向无法放入模型中。因此,当您看到其中任何一个时,可以安全地假设它们是控制器材料。

它属于事件控制器,因为参与的资源是一个事件。从这个意义上讲,您可以创建,编辑或参加活动。

答案 1 :(得分:0)

我将此代码留在控制器中。如果您开始访问此代码中的用户属性(例如,检查用户的类型或他们已经参加的事件的数量),那么将该代码移动到用户模型中可能是个好主意。

答案 2 :(得分:0)

这应该在控制器中,只应该调用模型来编辑或检索数据。

从我看到它看起来你正在引用一个对象(current_user),它不是你调用方法的类的属性,这不应该在模型中发生。