gpt4 book ai didi

mysql - ActiveRecord 不更新属性

转载 作者:行者123 更新时间:2023-11-29 13:59:04 25 4
gpt4 key购买 nike

这是一个代码片段及其结果输出。代码似乎更新了属性,但是当我在数据库中手动检查记录时,没有任何变化。这已由 .changed? 确认。返回假。我做错了什么?

class Ticket < ActiveRecord::Base
##+-----------------+-----------------------+------+-----+---------+-------+
##| Field | Type | Null | Key | Default | Extra |
##+-----------------+-----------------------+------+-----+---------+-------+
##| ticketid | bigint(20) unsigned | NO | PRI | NULL | |
##| ticketnumber | bigint(20) unsigned | NO | | NULL | |
##| contactname | char(40) | YES | | NULL | |
##| department | char(40) | YES | | NULL | |
##| tech | char(40) | YES | | NULL | |
##| timeopened | char(18) | YES | | NULL | |
##| timelastchanged | char(18) | YES | | NULL | |
##| mintuesopen | mediumint(8) unsigned | YES | | NULL | |
##| searchtermlist | varchar(255) | YES | | NULL | |
##+-----------------+-----------------------+------+-----+---------+-------+

attr_accessible :searchtermlist, :minutesopen, :timelastchanged, :tech

end

....

thisticket = Ticket.find_by_ticketid(ticketid)
if thisticket != nil
puts "---Ticket #{ticketid} Found!"
if thisticket.searchtermlist.include? importedsearchtermlist
puts "---Search term list current! Skipping..."
else
puts "---Updating search term list for ticket #{ticketid}"
puts importedsearchtermlist
puts thisticket.ticketid
puts thisticket.searchtermlist
updatedsearchtermlist = thisticket.searchtermlist << "," << importedsearchtermlist
puts updatedsearchtermlist
thisticket.searchtermlist = updatedsearchtermlist
result = thisticket.save!
puts result
puts thisticket.changed?
puts thisticket.searchtermlist
sleep(60)
end

输出:

---Ticket 47048 Found!
---Updating search term list for ticket 47048
virus
47048
update
update,virus
true
false
update,virus

最佳答案

使用<<不改变属性值。您可以使用thisticket.changes进行检查返回不包含更改值的哈希值。所以尝试使用:

updatedsearchtermlist += ( ',' + importedsearchtermlist)

或者:

updatedsearchtermlist = [updatedsearchtermlist, importedsearchtermlist].join(',')

而不是:

updatedsearchtermlist = thisticket.searchtermlist << "," << importedsearchtermlist

修复后也 changed?将返回false (在您的调试结果中)。因为,你是在保存记录后检查的。所以它总是会返回 false .

关于mysql - ActiveRecord 不更新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15370102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com