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)