2013-05-15 53 views
0

這裏是我的數據結構:模特協會在哪裏?

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進行關聯。

在檢索數據後Report模型中是否應該創建keywords?該協會是否也在那裏?

編輯:這是我的報告模型。如何從模型內部創建關聯?

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

從設計的角度來看fi no關鍵字可以沒有報告生活,報告應該持有邏輯來管理它們。所以你的問題的答案是肯定的,關鍵字應該在Report類以及關聯中創建。

+0

如何從模型類中創建關聯?我只是通過控制器 – mnort9

+0

@ mnort9 ...'self.keywords << the_keyword_generator',或'='或其他什麼來建立關聯。雖然如果它來自API,我可能有一些注入關鍵字生成方法的方法。 –

+0

你是什麼意思?在Report類中,您有一個對關鍵字集合的引用,您可以使用它。例如: self.keywords ='key1' – ema