繁体   English   中英

Ruby on Rails-来自数组值的ActiveRecord查询

[英]Ruby on rails - ActiveRecord query from array values

我正在建立一个测井方法。

在我的更新操作中,我将发布值的参数与实际db的值进行比较,以捕获更改并将其放入数组中

1°步骤 -创建一个数组,并使用更改名称modificati = Array.new填充

modificati.push("nome") if @clienti.nome != params[:clienti][:nome]
modificati.push('email') if @clienti.email != params[:clienti][:email]
..... the same for every field .....

2°步骤是仅记录更改的字段,因此我创建了一个具有更改的新数组

modifiche = Array.new

modificati.each do |m|
    modifiche.push( "#{m} : #{@clienti.m} >>  - ")
end     

但这不起作用,有人可以帮我吗? 我的目标是将其放入数组:

“ nome:old_value_from_db >> new_value_from_post”

但错误是:

#的未定义方法'm'

谢谢大家

您需要从@client调用属性(或方法),例如:

modificati.each do |m|
  modifiche.push( "#{m} : #{@client.public_send(m.to_sym)} >>  - ")
end  

编辑:如果@client是活动记录对象,则可以在保存之前使用@client.changes来跟踪对对象属性所做的任何更改。

编辑:填充第二个值,您可以在将其突变之前将@client重复:

client_before = @clienti.dup
.
.
.
# update @clienti, then
.
.
modifiche = []
modificati.each do |m|
  modifiche.push( "#{m} : #{client_before.public_send(m.to_sym)} >>  #{@clienti.public_send(m.to_sym)} ")
end  


[英]#<ActiveRecord::AssociationRelation Active Record Query Ruby on Rails

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM