gpt4 book ai didi

ruby-on-rails - 添加自定义属性以设计用户模型

转载 作者:太空宇宙 更新时间:2023-11-03 16:22:40 24 4
gpt4 key购买 nike

我将 Devise 与我的 Rails 4.2 应用程序一起使用,并且我有自定义用户 Controller ,而不是用来导航到 users#show 路由中的配置文件页面。问题是,如果我调用

@user.username 

它什么都不返回,值为 nil。

路线:

devise_for :users 
resources :users, :only => [:show]

我还通过 application_controller 对配置文件进行了以下调整:

def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:email, :password,:username) }
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation,:username) }
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:email, :password, :password_confirmation,:username) }
end

奇怪的是,我在数据库中植入了默认用户,他们可以访问该方法。所以这让我相信表格有问题。但果然,我已经启用了该字段,所以它不像我没有传递值。

设计/注册/new.html.erb

<div class="field">
<%= f.label :username %><br />
<%= f.text_field :username, autofocus: true %>
</div>

最后,我像这样通过 Controller 传递用户对象:

def show 
@user = User.find(params[:id])
@posts = @user.posts.last(5)
end

最后一件事,如果我检查用户对象,它会显示有一个用户名方法,但值为 nil。

我已经查看了 Devise 中的示例,但仍然不明白发生了什么。

最佳答案

实际上非常简单的解决方案。该方法需要使用这样的 before action 来调用:

class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?

protected

def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :username
end
end

它在此处的文档中:https://github.com/plataformatec/devise#strong-parameters

关于ruby-on-rails - 添加自定义属性以设计用户模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31327505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com