应该是event.join_user(user)还是user.join_event(event)

时间:2014-09-30 11:11:49

标签: ruby-on-rails rails-activerecord api-design

我有用户模型和事件模型。 用户可以参与活动,我不知道在哪里编写代码 - 在UsersController和User模型中,或在EventsController和Event模型中

UsersController
  def join_event
    current_user.join_event(Event.find(event_id))
  end
end

EventsController
  def add_user
    Event.find(event_id).add_user(current_user)
  end

哪种解决方案更好,更易读(或者有更好的方法)?

1 个答案:

答案 0 :(得分:1)

它应该取决于您将如何创建事件对象。在创建事件对象时可以轻松访问哪个对象。

第一种情况:

如果有组织者(管理员)的事件,组织者只能邀请用户,在这种情况下。代码应该在事件控制器中。因为您需要迭代用户对象集合而不是单个对象。

第二种情况:

如果用户可以直接加入任何已创建的事件/创建其他人可以加入的事件,那么它应该在用户控制器中。