跳至内容 跳至搜索

Action Text FixtureSet

Fixture 是组织要测试数据的常用方法;简单来说,就是示例数据。

若要详细了解 Fixture,请阅读 ActiveRecord::FixtureSet 文档。

YAML

与其他基于 Active Record 的模型一样,ActionText::RichText 记录继承自 ActiveRecord::Base 实例,因此可以通过 Fixture 填充数据。

考虑一个 Article

class Article < ApplicationRecord
  has_rich_text :content
end

要声明与之相关的 content 的 Fixture 数据,首先在 test/fixtures/articles.yml 中声明 Article 实例的 Fixture 数据

first:
  title: An Article

然后在 test/fixtures/action_text/rich_texts.yml 中声明 ActionText::RichText Fixture 数据,确保声明每个条目 的 record: 键作为多态关系

first:
  record: first (Article)
  name: content
  body: <div>Hello, world.</div>

处理后,Active Record 将为每个 Fixture 条目插入数据库记录,并确保 Action Text 关系保持完整。

方法
一个

类公开方法

attachment(fixture_set_name, label, column_type: :integer)

Fixture 支持 Action Text 附件作为其 body HTML 的一部分。

示例

例如,考虑在 test/fixtures/articles.yml 中声明的第二个 Article Fixture

second:
  title: Another Article

可以通过在 test/fixtures/action_text/rich_texts.yml 中的 body: 值中嵌入对 ActionText::FixtureSet.attachment 的调用,将 articles(:first) 的提及附加到 secondcontent

second:
  record: second (Article)
  name: content
  body: <div>Hello, <%= ActionText::FixtureSet.attachment("articles", :first) %></div>
# File actiontext/lib/action_text/fixture_set.rb, line 61
def self.attachment(fixture_set_name, label, column_type: :integer)
  signed_global_id = ActiveRecord::FixtureSet.signed_global_id fixture_set_name, label,
    column_type: column_type, for: ActionText::Attachable::LOCATOR_NAME

  %(<action-text-attachment sgid="#{signed_global_id}"></action-text-attachment>)
end