我有一个带有after_create过滤器的简单模型,用于创建关联记录。
class Subject
after_create :create_topics!
has_paper_trail :on => [:create, :update],
:ignore => [:topics]
private
def create_topics!
self.account.default_topics_for_subject_type(self.subject_type).each do |topic|
self.topics.create!({:name => topic.name})
end
end
end
但是,现在创建一个Subject
例如会创建两个主题会产生同一主题的两个版本,一个create
之前和update
主题发生变化后。
关于如何解决这个问题的任何想法?
更新
主题模型不是主题的子类,但属于它。他们还有一个paper_trail,应该从创建过程开始直到主题版本。
class Topic
belongs_to :subject
end
答案 0 :(得分:1)
private
def create_topics!
account.default_topics_for_subject_type(subject_type).each_with_index do |topic, index|
if index == 0
create_topic!(topic)
else
without_versioning { create_topic!(topic) }
end
end
end
def create_topic!(topic)
self.topics.create!({:name => topic.name})
end