从头部获取值并放入模型中

3
我想知道是否有一种方法可以直接从模型中获取标头的值。
# location.rb
class Location < ActiveRecord::Base
  puts request.header['key']
end

假设我们将一些值存储在头部,控制器中我使用 request.headers['key']。这个方法可以正常工作,但是在模型中却不行。


4
不,你需要将来自控制器的值传递给模型。 - Nate
3
该模型无法访问请求、会话等与当前请求有关的特定内容。按照Nate的建议将其作为参数传递。 - Anthony Alberto
1个回答

8

正如评论指出的那样,不能直接获取request对象。该对象仅在控制器中可用。

但是,由于您必须在控制器中实例化模型,因此这样做应该没有问题:

# some_controller.rb
def some_action
  @location = Location.new(name: request.headers['key'])
  ...
end

这是一个好的实践吗?从控制器中要求一个令牌或其他任何头部信息,这样做是否正确和安全? - Sebastialonso
2
当然。例如,Devise使用来自请求的令牌进行密码重置等操作。无论这些令牌是传递给方法还是构造函数都不重要,它们的来源也不重要,可以是参数、cookie或请求头。就像任何用户输入的情况一样,应该仔细清理。 - Thilo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接