Ruby on rails Rails getter关于更新记录中的主键问题

Ruby on rails Rails getter关于更新记录中的主键问题,ruby-on-rails,Ruby On Rails,各位开发人员 我遇到了一个关于在表的id(主键)上使用getter的问题,我遇到了无法按预期工作的更新记录,我是ruby新手,我一直在搜索相同的问题,但找不到 我在MainController中创建了一个方法 def do_the_hash_thingy(id) return id + 10 end def do_the_unhash_thingy(id) return id.to_i - 10 end 这就是模型 def id if self[:id].present?

各位开发人员

我遇到了一个关于在表的id(主键)上使用getter的问题,我遇到了无法按预期工作的更新记录,我是ruby新手,我一直在搜索相同的问题,但找不到

我在MainController中创建了一个方法

def do_the_hash_thingy(id)
  return id + 10
end

def do_the_unhash_thingy(id)
  return id.to_i - 10
end
这就是模型

def id
    if self[:id].present?
        MainController.new.do_the_hash_thingy(self[:id])
    end
end
假设id是4,在散列处理之后,它应该是14,在取消散列处理之后返回到4

SampleTable.find(MainController.new.do_the_unhash_thingy(params[:id]))
SampleTable.column1 = 'new data'
SampleTable.save
日志结果

UPDATE `sample_table` SET `column1` = 'new data', `updated_at` = '2017-11-18 00:00:00' WHERE `sample_table`.`id` = 14
奇怪的是,它仍然在id 14而不是4上更新

我已经检查了hash和unhash的值是否按预期返回

Ruby版本:2.4.1


Rails版本:5.0.6

这在Rails 5.1.0中得到了解决。请考虑升级到5.1。p> 您确定
column1
是类方法吗
SampleTable.column1='newdata'
??如果您传递的是id=4,那么它将在SampleTable中搜索-6。你能回顾一下你的问题并重新发布吗。谢谢。@imechemi在show route上,我从表中的id 4中得到了14,在update route中,我传递了值14,将其解压并转换回4,然后找到要更新它的记录,您可以看到我包含的日志,它仍然为第14行更新。非常感谢,我升级了版本,它正在工作,呸,我以为我错过了步骤