0

这是我的数据结构:

class Report < ActiveRecord::Base
  has_many :keywords
end

class Keyword < ActiveRecord::Base
  belongs_to :report
end

创建a 时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
4

1 回答 1

0

从设计的角度来看,没有报告就没有关键字可以生存,报告应该包含管理它们的逻辑。所以你的问题的答案是肯定的,关键字应该在 Report 类以及关联中创建。

于 2013-05-15T20:53:21.523 回答