【问题标题】:Accessing Custom Parameters when using Devise and Rails 4使用 Devise 和 Rails 4 时访问自定义参数
【发布时间】:2013-07-18 02:56:07
【问题描述】:

我正在使用 teamtreehouse 教程学习 rails。本教程使用 3.1,但我正在尝试学习 4.0,结果我遇到了困难,大概是因为 rails 4 使用强参数的力量。我有两个模型,一个用户模型和一个状态模型。我已经使用设计为用户创建身份验证,并包含了新参数。它们是:first_name、:last_name 和:profile_name。我已经创建了用户和状态之间的关系。

目前使用新参数的用户注册正在工作;我可以使用例如 current_user.last_name 访问它们。但是,我想在状态索引视图上显示创建帖子的用户的 profile_name(每个用户还没有单独的页面)。我想使用

status.user.profile_name

但是它只是显示为空白。如果我做 status.user.email(这是一个预先配置的设计参数),它显示没有问题。我猜我必须在某些控制器中将这些参数列入白名单,但我不知道在哪里或如何。 谢谢

【问题讨论】:

    标签: devise ruby-on-rails-4 strong-parameters


    【解决方案1】:

    我想,在这里你会找到你的答案:https://github.com/plataformatec/devise/tree/rails4#strong-parameters

    基于上面的链接,我认为你应该在你的 ApplicationController 中插入这样的东西:

    class ApplicationController < ActionController::Base
      before_filter :configure_permitted_parameters, if: :devise_controller?
    
      protected
    
      def configure_permitted_parameters
        devise_parameter_sanitizer.for(:user) { |u| u.permit(:profile_name) }
      end
    end
    

    我已经在上一个问题中提出了建议...... Strong parameters with Rails and Devise

    ...您可以创建自己的控制器,该控制器可以扩展设计自己的控制器。有一个要点: https://gist.github.com/bluemont/e304e65e7e15d77d3cb9

    设计文档中的更多细节:https://github.com/plataformatec/devise/tree/rails4#configuring-controllers

    【讨论】:

    • 当我用 :sign_up 切换 :user 时它起作用了。根据我的阅读:如果我在控制器中重写 user_params 方法,用户将起作用。这是我想要避免的……(我应该学习如何,因为如果不这样做,就不可能实现真正的设计定制)。
    猜你喜欢
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多