范围 ActionText::RichText 覆盖 table_name
Extent ActionText::RichText to override table_name
ActionText::RichText
class 在 Rails 代码中有 table 名称 hard coded。
self.table_name = "action_text_rich_texts"
它会忽略 table_name_prefix
设置并使 table 名称 project_a_action_text_rich_texts
无法工作。
有没有办法覆盖来自 Rails class ActionText::RichText
的 table_name
?
更新:将两个应用程序更新为 Rails 6.x,它们在云中共享相同的数据库,但使用 table_name_prefix
进行单独设置tables.
在 Rails 中,table ActionText
和 ActiveStorage
的名称是硬编码的。目标是让项目 A 读取 project_a_action_text_
,让项目 B 读取 project_b_action_
tables.
它 looks like 它会在 Rails 7
中至少修复 ActiveStorage
在那之前,我使用以下补丁覆盖 ActionText
和 ActiveStorage
中的 table_name
。当您将 Rails 升级到 7.
时,请务必验证它是否正常工作(或将其删除)
这是 ActionText
的示例
首先在lib
文件夹中创建一个模块并设置新的table_name
#lib/extensions/action_text_rich_text.rb
# frozen_string_literal: true
module Extensions::ActionTextRichText
extend ActiveSupport::Concern
def table_name
'project_a_action_text_rich_texts'
end
end
创建一个新的初始化器并将扩展模块添加到ActionText
#config/initializers/extensions.rb
Rails.application.config.to_prepare do
ActionText::RichText.extend Extensions::ActionTextRichText
end
它将覆盖在 Rails ActionText
模块中设置的 table_name
。
现在您可以在 Rails 和 运行 迁移生成的 ActionText
迁移中更新 table 名称。
您可以在 Rails 控制台中调用 ActionText::RichText.table_name
进行测试。它应该打印您在扩展程序中设置的新 table 名称。
ActionText::RichText
class 在 Rails 代码中有 table 名称 hard coded。
self.table_name = "action_text_rich_texts"
它会忽略 table_name_prefix
设置并使 table 名称 project_a_action_text_rich_texts
无法工作。
有没有办法覆盖来自 Rails class ActionText::RichText
的 table_name
?
更新:将两个应用程序更新为 Rails 6.x,它们在云中共享相同的数据库,但使用 table_name_prefix
进行单独设置tables.
在 Rails 中,table ActionText
和 ActiveStorage
的名称是硬编码的。目标是让项目 A 读取 project_a_action_text_
,让项目 B 读取 project_b_action_
tables.
它 looks like 它会在 Rails 7
中至少修复ActiveStorage
在那之前,我使用以下补丁覆盖 ActionText
和 ActiveStorage
中的 table_name
。当您将 Rails 升级到 7.
这是 ActionText
首先在lib
文件夹中创建一个模块并设置新的table_name
#lib/extensions/action_text_rich_text.rb
# frozen_string_literal: true
module Extensions::ActionTextRichText
extend ActiveSupport::Concern
def table_name
'project_a_action_text_rich_texts'
end
end
创建一个新的初始化器并将扩展模块添加到ActionText
#config/initializers/extensions.rb
Rails.application.config.to_prepare do
ActionText::RichText.extend Extensions::ActionTextRichText
end
它将覆盖在 Rails ActionText
模块中设置的 table_name
。
现在您可以在 Rails 和 运行 迁移生成的 ActionText
迁移中更新 table 名称。
您可以在 Rails 控制台中调用 ActionText::RichText.table_name
进行测试。它应该打印您在扩展程序中设置的新 table 名称。