Ruby on rails 如何在rails中为活动记录更新方法创建动态属性

Ruby on rails 如何在rails中为活动记录更新方法创建动态属性,ruby-on-rails,activerecord,ruby-on-rails-5,Ruby On Rails,Activerecord,Ruby On Rails 5,我从get/Postrequests=> params[:status],params[:value]#:value的值为:status 我希望使用活动记录的update方法来更新记录(需要运行验证)。然后如何创建一个动态查询,如 @user.update(status: value) 我试过这个 attribute = { params[:status] => params[:value] } user.update(attribute) 但这并不需要任何验证。在这里,验证对我来说很

我从
get/Post
requests=>

params[:status],params[:value]#:value的值为:status

我希望使用活动记录的
update
方法来更新记录(需要运行验证)。然后如何创建一个动态查询,如

@user.update(status: value)
我试过这个

attribute = { params[:status] => params[:value] }
user.update(attribute)

但这并不需要任何验证。在这里,验证对我来说很重要

Update将调用验证,但您需要更改构建属性的方式,因为
params[:status]:
不是有效的构造。使用

attribute = { params[:status] => params[:value] } 

您可以使用
send
method动态调用对象上的方法(属性)


如果有多个字段用逗号分隔

attributes={“firstname”=>“John”,“姓氏”=>“Stack”}

就你而言

attributes={params[:status]=>params[:value],params[:name]=>params[:value]}

或转换为字符串(如果需要)


attributes={params[:status]。to_s=>params[:value]。to_s,params[:status]。to_s=>params[:value]。to_s}//默认值为string

有两种方法

attribute = { status: value }
user.update(attribute) // this should run validation for sure.

user.assign_attributes(attribute)
user.save(validate: true)

对不起,这只是问题中的一个典型。这很奇怪,现在我可以看到它没有通过验证。基本上相同的代码。也许我以前使用了一个错误的值,但无论如何,很高兴你的问题得到了解决!
attribute = { status: value }
user.update(attribute) // this should run validation for sure.

user.assign_attributes(attribute)
user.save(validate: true)