首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails update_attributes

rails update_attributes
EN

Stack Overflow用户
提问于 2012-01-07 18:08:04
回答 2查看 543关注 0票数 2

我的用户模型有

代码语言:javascript
复制
validates :password, :presence => true,
                                :confirmation => true,
                                :length => {:within => 6..40}

我在用户控制器上的更新操作是

代码语言:javascript
复制
def update
        @user = User.find(params[:id])
        if @user.update_attributes(params[:user])
            flash[:success] = "Profile updated."
            redirect_to @user
        else
            @title = "Edit user"
            render 'edit'
        end
    end

我的编辑视图是

代码语言:javascript
复制
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', :object => @user.errors%>
<div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
</div>
<div class="field">
    <%= f.label :email %><br />
    <%= f.text_field :email %>
</div>
<div class="field">
    <%= f.label :password %> <br />
    <%= f.password_field :password %>
</div>
<div class="field">
    <%= f.label :password_confirmation, "Confirmation" %> <br />
    <%= f.password_field :password_confirmation %>
</div>
<div class="actions">
    <%= f.submit "Update" %>
</div>

问题是我只想更新模型的特定属性,而不是每次都输入密码。如果我没有输入密码(和确认),我会得到验证错误)

我该如何解决这种情况?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-15 06:12:42

尝试下一个验证规则

验证:password,:presence => true,:if => lambda { new_record?|| !password.nil?}

票数 1
EN

Stack Overflow用户

发布于 2012-01-07 18:30:32

您可以使用attr_protectedupdate_attributes中排除某些字段。请参阅doc。一种更好的方法是使用attr_accessible将可以通过批量分配更新的属性列入白名单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8768880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档