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