2014-11-25 39 views
1

我想補充Service類別,同樣喜歡Spree::Product,對於我定義一些協會,如下與狂歡

class Service < ActiveRecord::Base 
     has_many :images, -> { order(:position) }, as: :viewable, class_name: "Spree::Image", dependent: :destroy 

     has_many :taxons, class_name: "Spree::Taxon", dependent: :destroy 

     validates :name, presence: true, 
        length: { minimum: 5 } 

end 

現在關聯定製機型,首先,這是定義這樣的分類正確的方法或者我應該使用其他約定來定義Service,並且對於:taxons關聯,我應該如何定義遷移以在spree_taxons表中添加service_id列?

回答

0

您需要一個新的加入模型,例如ServiceTaxons而不是將service_id加到Spree::Taxon。如果你看Products如何鏈接到Taxons它是通過spree_product_taxons表。

更重要的部分是您是否需要新的Service類。只有產品才能讓你的服務變得更好。產品深深紮根於Spree系統中,您正在爲自己創造大量工作,試圖實現與其並存的另一種模型。

1

有設計存在的問題,狂歡使用了一個模型加入分類羣產品,你應該創建它,並將它命名services_taxon,遷移應該是這個樣子:

class CreateServiceTaxon < ActiveRecord::Migration 
    def change 
    create_table :service_taxon do |t| 
     t.integer :service_id 
     t.integer :taxon_id 
    end 
    end 
end 

而且在服務模型,你應該加上:

class ServiceTaxon < ActiveRecord::Base 
    belongs_to :service, :class_name => 'Service', :foreign_key => 'service_id' 
    belongs_to :taxon, :class_name => 'Spree::Taxon', :foreign_key => 'taxon_id' 
end 

另一件事我要指出的是,如果您甲腎上腺素編輯了產品模型中已經由狂熱團隊創建的一些功能,您應該考慮使用他們的產品,或者至少嘗試擴展產品模型。