ruby-on-rails - 更新用户的单个属性

标签 ruby-on-rails ruby forms update-attributes

我有一个用户表,创建用户后我想使用以下代码编辑一个属性。这是我的用户编辑 View :

<h1>Please select below</h1>

<%= form_for @user do |f| %>

  <div class="form-group">
    <%= f.label :extra_activity %>
    <%= f.select(:extra_activity, [['P_Act', 1],['Ph_Act', 2], ['C_Act', 3]], class: 'form-control', required: true)  %></br>
  </div>

  <%= f.submit 'Submit', class: 'btn btn-primary btn-lg' %>
<% end %>

在我的用户 Controller 中,我有以下编辑和更新方法:

def edit
    @user = User.find(params[:id])
    @users = User.all
    @user_id = params[:user_id]
end

def update
    @user = User.find(params[:id])
    if @user.update_attributes(user_params)
        redirect_to new_user_activity_path(@user)
    else
        redirect_to home_path 
    end
end
下面列出了

user_params:

  def user_params
     params.require(:user).permit(:first_name, :surname, :previous_award, :chosen_award, :email, :password, :password_confirmation, :extra_activity)
  end

当我最初创建用户时,:extra_activity 设置为 0。当用户单击编辑表单上的“提交”时,没有任何反应,用户被重定向到 home_path 。我只需要将用户的 :extra_activity 属性更新为他们在表单中选择的任何内容。有人能建议我这里哪里出了问题吗?不确定如何保存所选数字作为 :extra_activity

的更新值

更新:

class User < ActiveRecord::Base
   has_many :activities, dependent: :destroy
   has_many :weeks, dependent: :destroy
   authenticates_with_sorcery!
   validates :password, length: { minimum: 3 }
   validates :password, confirmation: true
   validates :email, uniqueness: true, email_format: { message: 'has invalid format' }
end

最佳答案

阅读您的评论并检查更新后,我想解决方案是添加:

验证 :password, 长度: { 最小值: 3 }, if: :password

密码很可能以散列形式存储,而不是存储在 password 列中。因此,如果您重新加载用户,则不会设置该属性。 验证应该是:如果设置了密码,则确保其长度至少为 3(相当短)。

您应该确保通过此 Controller 更新用户时存储的密码不会更改。

关于ruby-on-rails - 更新用户的单个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35927634/

相关文章:

php - PHP-表单,发布到同一页面,错误处理,防止重新提交

ruby-on-rails - 我怎样才能找到 Rails 中的当前路线?

ruby-on-rails - 蜻蜓和短网址

ruby-on-rails - 请求的资源上不存在 'Access-Control-Allow-Origin' header - Rails 4.2

ruby - 如何表达特定时区的时间?

到 "exists && =="的 Ruby 快捷方式

ajax - 我还可以将什么传递给 Ext.Ajax.request 的 `form` 属性?

javascript - 通过 jQuery 仅选择一个对象并使用表单提交

ruby-on-rails - 如何在 WampServer 旁边安装 Ruby on Rails?

ruby-on-rails - 是否可以在 Ruby 1.9 中透明地实现 ActiveRecord 查询的 Future 模式?