现有文本字段的Rails操作文本

时间:2019-08-29 03:55:23

标签: ruby ruby-on-rails-6 actiontext

我正在将我的新闻应用程序之一升级到Rails 6.0.0。解决时,我在使用Rich Text时遇到问题。我的应用程序指向的是富文本格式正文字段,而不是现有的表正文字段。

是否可以将现有的表格文本字段用于富文本,以便我可以在需要时编辑内容。像新帖子一样,我可以使用action_text_rich_texts表,但对于现有帖子,我想使用现有表主体字段。

2 个答案:

答案 0 :(得分:1)

假设您的模型中有一个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 Issue comment

答案 1 :(得分:0)

ActionText的帮手has_rich_text defines的getter和setter方法。

您可以重新定义body方法,使用read_attribute为ActionText提供存储在表中的值:

class Post
  has_rich_text :body

  # Other stuff...

  def body
    rich_text_body || build_rich_text_body(body: read_attribute[:body])
  end