【问题标题】:How can I access cookies from a model in Rails 3如何从 Rails 3 中的模型访问 cookie
【发布时间】:2011-10-25 04:14:19
【问题描述】:

我正在使用 Koala gem 与 Facebook API 进行交互。为了连接到 API,我需要将我的 cookie 传递给 Koala。我想在模型中执行此操作,因为我想在模型中的 before_create 回调期间从 Facebook 数据向用户添加其他数据。例如,如果用户有一个活动的 FB 会话,则在创建用户行时存储他们的 Facebook UID。如何从模型中获取 cookie?

【问题讨论】:

    标签: ruby-on-rails-3 cookies model


    【解决方案1】:

    模型不应该知道他们在网络环境中运行。

    您可能需要考虑的只是将 FB UID 与任何其他属性一样存储在模型上,方法是在创建期间将其设置在模型上。

    【讨论】:

    • 为什么?据我了解,模型是 MVC 模式中数据存储的包装器。如果数据存储在 cookie 中,为什么模型不知道 Web 环境?如果目标是将数据存储与数据查看和数据处理分离,那么它没有任何问题。所以,我很想听听你的原因。
    • @Rokujolady 当他们 need 是来自曲奇饼。 与网络无关,cookie 是。 “目标”是分离不相关的层,数据没有理由了解网络,它只需要来自网络的。通过将它们分开,您可以从任何地方获取数据,例如测试、服务等。
    • 很公平。从您的回复和其他研究中,我开始看到这更像是对 MVC 的以 Rails 为中心的解释,而不是模式中固有的。简而言之,我认为真正的答案是“这样做是因为 Rails 框架设置为以这种方式处理它,如果你不遵守规定,你的生活就会变得悲惨!”一般来说,它不反对 MVC,因为操纵数据的东西,即控制器,不应该关心数据存储在哪里......在客户端驱动器上的 cookie 或服务器数据库中。
    • @rokujolady 这与 Rails 无关。这与保持两个完全不同的功能块分开有关。模型需要知道 Facebook id,句号。除了id,没有其他联系。将模型与纯网络工件 cookies 联系起来获取这个 id 是荒谬的。响应 facebook_id 方法的东西,或者具有合理密钥的散列,当然——这两者都不需要从非 Web 层工件访问 Web 层工件。
    • 我同意。在这种情况下,使用会话 cookie 字段作为控制器的参数来查找数据库中的项目是有意义的。我只是说在某些情况下,模型可以合理地包装 cookie,而且它的设计并不总是糟糕的。
    猜你喜欢
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 2012-10-27
    • 1970-01-01
    相关资源
    最近更新 更多