Ruby更新值内部的现有哈希值



我有一个模型,其中一列是哈希值,就像下面的

[3] pry(main)> Activity.find(14)
=> #<Activity:0x00007fe625694070
id: 14,
content_basic: {
"content_type"=>"Audio",
"session_overview_image"=>"https://some_domain.com/392/123-woman.png"}

我想把content_basic['session_overview_image']改成/392/123-woman.png——如何在rails c中做到这一点?

这样做怎么样:

Activity.find_each do |activity|
img = activity.content_basic['session_overview_image'].gsub('https://some_domain.com', '')
activity.content_basic['session_overview_image'] = img
activity.save
end

这假设所有url都具有要删除的相同域。如果没有,那么首先需要进行一点URI解析。

它还假设您没有使用较旧的Rails版本(我相信是之前的第3个版本(,在更改序列化列值时,您必须告诉ActiveRecord哈希中发生了变化。

最新更新