我正在使用Devise和我的Rails 4.2应用程序,我有自定义用户控制器,而不是用于导航到用户#show route中的个人资料页面。问题是,如果我打电话
query.each(function(user) {
counter = counter+1;
// you'll want to save your changes for each user,
// therefore, you will need this
return user.save();
}).then(function() {
// Set the job's success status
status.success("Counted all User Accounts.");
// console.log inside the asynchronous scope
console.log('Found '+counter+' users.');
}, function(error) {
// Set the job's error status
status.error("Failed to Count User Accounts.");
});
它什么都不返回,值为零。
路线:
@user.username
我还通过application_controller对配置文件进行了以下调整:
devise_for :users
resources :users, :only => [:show]
奇怪的是,我已经使用默认用户播放了数据库,并且他们可以访问该方法。所以这让我相信表格有问题。但果然,我已经启用了这个领域,所以它并不像我没有传递价值。
设计/注册/ new.html.erb
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
最后,我通过控制器传递用户对象,如下所示:
<div class="field">
<%= f.label :username %><br />
<%= f.text_field :username, autofocus: true %>
</div>
最后一件事,如果我检查用户对象,它会显示有一个用户名方法,但值为nil。
我看过Devise的例子,但仍然没有得到正在发生的事情。
答案 0 :(得分:1)
实际上非常简单的解决方案。需要使用之前的操作调用该方法:
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
答案 1 :(得分:0)
您是否可以在用户模型中添加attr_accessor?
这可能会将您的值覆盖为零。