2014-05-19 57 views
0

有下面的代码:如何仅更新属性列表Rails?

@owner = Owner.find(params[:id]) 
if @owner.update(owner_params) 
    # Some actions 
else 
    render 'edit' 
end 

'所有者' 模型有姓名,电子邮件,电话和2个虚拟属性(has_secure_password):密码和password_confirmation。我只想更新姓名,电子邮件和电话:

def owner_params 
    params.require(:owner).permit(:name, :email, :phone) 
end 

但是,当我尝试更新所有者我得到一个消息有关空密码的,因为我在创建过程中使用存在验证密码。请告诉我,是否有可能只更新通过验证其他发送属性的列表?提前致谢。

+0

怎么样'hidden_​​field'进行自定义验证?不知道.. – Nithin

+0

你使用devise进行身份验证吗? – RSB

回答

-1

改为使用#update_attributes。它看起来像#update运行所有参数的验证(即使是缺少的)。

+1

'update'和'update_attributes'之间没有区别,'rails'中引入了'update' – RSB

+0

是的。答案前面糊检查 –

0

如果使用Devise进行身份验证,然后有一个叫update_without_password方法,做这样

@owner.update_without_password(owner_params) 
0

希望这一个帮助。

has_secure_password validations: false的工作,但你需要后