I need to search text in a Rails ActionText field. Couldn't find any solutions, so I created a text plain field and when the ActionText form is submitted, a before_ save self.content_plain_text = content.body.to_plain_text
is run. This works fine and I can search in content_plain_text
.
But now I need to update the content_plain_text
for all the already existing data. Found this How do I move a column (with contents) to another table in a Rails migration? which has a migration. And I thought I could mimic that, but this isn't working.
class CopyContentToContentPlainText < ActiveRecord::Migration[6.0]
def up
Doc.find_each do |d|
content_plain_text = action_text_rich_texts.record_id[d].content.body.to_plain_text
Content.create!(doc_id: d.id, content_plain_text: content_plain_text)
end
end
end
I'm lost in getting an ActionText field. record_id
corresponds to the doc_id
As you already define before_save
before_save { self.content_plain_text = content.body.to_plain_text }
then whenever you call a_doc.save
, the before_save
will be triggered , hence, it's content_plain_text
will be assigned to content.body.to_plain_text
.
so you could update content_plain_text
for all Doc
records just simple call save
class CopyContentToContentPlainText < ActiveRecord::Migration[6.0]
def up
Doc.find_each(&:save)
end
end