所以我在rails中有一个多态控制器,我的问题是,有没有办法让我获得请求者的范围。例如,溃败是/users/1/messages
,请求转到MessagesController
,在那个控制器中,有没有办法获得路由的users
部分?或者在这种情况下它也可以是admin
或其他。
我无法设置if语句结构,因为在这种情况下,`POST'/ users / 1 / messages'是发送给用户的消息,可能来自管理员。
答案 0 :(得分: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