这是我的数据结构:
class Report < ActiveRecord::Base
has_many :keywords
end
class Keyword < ActiveRecord::Base
belongs_to :report
end
创建Report
时,会从第三方API检索关键字数据。
def create
@report = Report.new(params[:report])
@report.get_keywords
create!
end
Report
模型与返回第三方数据的服务对象进行交互。然后应将数据转换为keywords
,并且应该与新创建的Report
建立关联。
检索数据后是否应在keywords
模型中创建Report
?这个协会也在那里制作了吗?
修改:这是我的报告模型。如何从模型内部创建关联?
def get_keywords
data = ThirdPartyDataFetcher.new.fetch_keywords
create_keywords(data)
end
private
def create_keywords(data)
data.each do |key, value|
keyword = Keyword.new
keyword.description = key
keyword.total_value = value
# An association should be made and the keyword should be saved
self.keywords << keyword
keyword.save
end
end
答案 0 :(得分:0)
从设计的角度来看,没有关键字可以在没有报告的情况下生存,报告应该掌握管理它们的逻辑。所以问题的答案是肯定的,关键字应该在Report类和关联中创建。