模型协会在哪里制作?

时间:2013-05-15 20:44:43

标签: ruby-on-rails associations

这是我的数据结构:

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

1 个答案:

答案 0 :(得分:0)

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