【问题标题】:Replacing Ckeditor with ActionText in a Rails 6 app在 Rails 6 应用程序中用 ActionText 替换 Ckeditor
【发布时间】:2019-10-28 23:58:18
【问题描述】:

所以我在我的 rails 6 应用程序中用 ActionText 替换了 CKEditor,升级到 rails 6 和安装动作文本很顺利。

我想问我如何能够将数据从我的模型属性迁移到新建立的动作文本关联(不完全迁移,我希望能够显示旧数据,甚至能够编辑/更新它)。

例如,我的模型中有一个 description 属性,之前与 CKEditor 一起使用,现在我将该字段更改为 rich_text 字段,如下所示:has_rich_text :description

所以现在所有对description 的引用只需查询它的rich_text 关联。

如果我想在我看来做这样的事情,我该如何实现?

@model.description (display if rich_text data is present) || @model.description (or try this if rich_text data is blank, also display nothing if both is blank) 

我想为显示、编辑、更新和删除操作实现此目的。知道如何完成这项工作吗?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    为什么不直接将 Ckeditor 列迁移到新的 action_text 表中?

    class ConvertCkeditorToActionText < ActiveRecord::Migration[6.0]
      def up
        action_text_rich_text_statement = ActiveRecord::Base.connection.raw_connection.prepare('action_text_rich_text_statement', <<-SQL)
          INSERT INTO action_text_rich_texts (
            name, body, record_type, record_id, created_at, updated_at
          ) VALUES ($1, $2, $3, $4, $5, $6)
        SQL
    
        Rails.application.eager_load!
    
        transaction do
          Post.all.each do |post|
            ActiveRecord::Base.connection.raw_connection.exec_prepared(
                    'action_text_rich_text_statement', [
                      'body',
                      post.body,
                      "Post",
                      post.id,
                      post.created_at,
                      post.updated_at
                    ])
          end
        end
      end
    
      def down
        raise ActiveRecord::IrreversibleMigration
      end
    end
    

    【讨论】:

    • 例如,将@posts.body 迁移到新表所涉及的步骤是什么?迁移的数据如何与正确的用户保持联系?感谢您的帮助!
    • @TomConnolly 添加了迁移示例
    猜你喜欢
    • 2020-01-12
    • 2021-10-03
    • 2020-07-29
    • 2019-12-29
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多