Rails Action Text для существующего текстового поля

Я обновляю одно из своих новостных приложений до Rails 6.0.0. Во время работы у меня возникла проблема с использованием Rich Text. Мое приложение указывает поле основного текста вместо моего существующего поля таблицы.

Можно ли использовать существующее текстовое поле таблицы для расширенного текста, чтобы я мог редактировать содержимое, когда мне это нужно. Как и для новых сообщений, я могу использовать таблицу action_text_rich_texts, но для существующих сообщений я хочу использовать поле тела существующей таблицы.

0 ответов

Предполагая, что есть content в вашей модели, и это то, что вы хотите перенести, сначала добавьте в свою модель:

has_rich_text :content

Затем создайте миграцию

rails g migration MigratePostContentToActionText

Результат:

class MigratePostContentToActionText < ActiveRecord::Migration[6.0]
  include ActionView::Helpers::TextHelper
  def change
    rename_column :posts, :content, :content_old
    Post.all.each do |post|
      post.update_attribute(:content, simple_format(post.content_old))
    end
    remove_column :posts, :content_old
  end
end

См. Этот комментарий к проблеме Rails.

Помощник ActionText has_rich_text определяет для вас методы получения и установки.

Вы можете переопределить bodyснова, предоставив ActionText значение, хранящееся в таблице, с помощью read_attribute:

class Post
  has_rich_text :body

  # Other stuff...

  def body
    rich_text_body || build_rich_text_body(body: read_attribute[:body])
  end
Другие вопросы по тегам