0

所以我在 Rails 中有一个多态控制器,我的问题是,有没有办法让我获得请求者的范围。例如,路线是/users/1/messages,请求转到MessagesController,在该控制器中,有没有办法获取users路线的一部分?或者在这种情况下,它也可能admin是其他东西。

我不能只设置一个 if 语句结构,因为在这种情况下,`POST '/users/1/messages' 是发送给用户的消息,可能来自管理员。

4

1 回答 1

1

通常你应该放置一个类型字段(例如messagable_type),一个消息实例具有相应的类(例如User),并且 id 字段(例如messagable_id)将指向用户的 id。所以你可以问一个消息实例:

 message.messagable
 => user

它将返回用户实例。

如果您有一个网址,例如:/users/1/messages并且您想使用它:

def load_messagable
  resource, id = request.path.split('/')[1,2]
  @messagable = resource.singularize.classify.constantize.find(id)
end

这是 Ryan Bates 在本集中给出的解决方案:http ://railscasts.com/episodes/154

于 2013-03-31T21:23:28.297 回答