我认为最简单的方法是像这样拆分您的输入:
# Tasks
tasks = { id: XX, state: YY, ... }
# Descriptions
descriptions = { record_type: 'Task', record_id: XX, name: 'description', body: 'Actual body' }
然后你可以做这样的事情:
Task.insert_all(tasks)
ActionText::RichText.insert_all(descriptions)
这是你要找的吗?
==================================================== ======
更新:
只是为了阐明这是如何工作的,我们需要了解该RichText
模型与 Rails 中的任何其他模型一样工作,但序列化信息如下所示:https ://github.com/rails/rails/blob/master/actiontext/app/models /action_text/rich_text.rb#L11
要查看真正从数据库中提取的内容,我们可以使用 helper *field*_before_type_cast
。例如:
descriptions = [ { record_type: 'Task', record_id: XX, name: 'description', body: '<p>EXAMPLE</p>' } ]
ActionText::RichText.insert_all(descriptions)
ActionText::RichText.last.body => <ActionText::Content....>
ActionText::RichText.last.body_before_type_cast => '<p>EXAMPLE</p>'
另外,请记住,每条记录可以有一个富文本(是 1 - N 多态关联)。因此,如果您尝试description
为您的任务插入第二个,它将不起作用