我在 Rails 3 中有一个 Web 应用程序,它已经有一个多态回形针模型。我已经附加了几个模型。
我很快意识到我需要一个好的所见即所得的文本区域编辑器,我用回形针安装了 ckeditor gem,但它为 ckeditor::pictures 和资产生成了自己的模型。
有没有办法覆盖 gem 在 ckeditor 中寻找的模型,以便我可以将现有的多态回形针模型与 ckeditor 一起使用?
我在 Rails 3 中有一个 Web 应用程序,它已经有一个多态回形针模型。我已经附加了几个模型。
我很快意识到我需要一个好的所见即所得的文本区域编辑器,我用回形针安装了 ckeditor gem,但它为 ckeditor::pictures 和资产生成了自己的模型。
有没有办法覆盖 gem 在 ckeditor 中寻找的模型,以便我可以将现有的多态回形针模型与 ckeditor 一起使用?
我发现您不能告诉 gem ckeditor 使用您现有的回形针模型,您必须使用它生成的回形针模型或不使用编辑器。然后,您将不得不通过分叉并进行编辑来使用您当前和现有的回形针模型来对抗宝石。
如果您已经通过回形针或carrierwave 拥有现有的附件模型,我个人建议不要使用ckeditor gem。只需从他们的网站获取ckeditor javascript 文件并以这种方式实现编辑器。
您可以通过下载 javascript 文件来执行此操作,将它们放在您的 assets/javascript 目录中。然后将它们包含在您的 application.js 中
我知道这个问题有点老了,但现在有一种方法可以设置模型。您可以使用其中的设置来设置config/initializers/ckeditor.rb
模型config.picture_model
。config.attachment_file_model
使用 gem 本身提供的这个生成器:
rails generate ckeditor:install --orm=active_record --backend=paperclip
如果您将图片模型和附件文件模型更改为从基本模型继承:
class Ckeditor::Picture < Asset
end
并在您的基类中包含 Ckeditor:
class Asset < ApplicationRecord
include Ckeditor::Orm::ActiveRecord::AssetBase
include Ckeditor::Backend::Paperclip
belongs_to :attachable, :polymorphic => true
has_attached_file :data,
storage: :s3,
s3_region: S3_CONFIG["region"],
path: "assets/:attachment/:id/:style.:extension",
:styles => lambda { |a| a.instance.styles },
s3_credentials: {
access_key_id: S3_CONFIG["access_key_id"] ,
secret_access_key: S3_CONFIG["secret_access_key"]
},
s3_protocol: 'http',
bucket: S3_CONFIG["bucket"]
end
并在初始化程序(ckeditor.rb)中更改表名:
module Ckeditor
module Orm
module ActiveRecord
module AssetBase
def self.included(base)
base.send(:include, Base::AssetBase::InstanceMethods)
base.send(:extend, ClassMethods)
end
module ClassMethods
def self.extended(base)
base.class_eval do
self.table_name = 'assets'
end
end
end
end
end
end
end
它似乎工作。