0

考慮少女模特兒包括Model:Rails的:基於列的值

Product 
    id 
    type - enumerable 'book' or 'magazine' 

Book 
    ...attributes 

Magazine 
    ...attributes 

凡產品HAS_ONE書,產品HAS_ONE雜誌,書籍belongs_to的產品,書籍雜誌belongs_to的。

如何根據Product.type(書籍或雜誌)選擇模型(書籍或雜誌)?

有沒有更好的方法來做到這一點,因爲書和雜誌是一個產品的實例,但有自己非常不同的屬性?

回答

1

請參閱Rails'Polymorphic Associations。例如:

class Product < ActiveRecord::Base 
    belongs_to :buyable, polymorphic: true 
end 

class Book < ActiveRecord::Base 
    has_one :product, as: :buyable 
end 

class Magazine < ActiveRecord::Base 
    has_one :product, as: :buyable 
end 

更多詳細信息請點擊鏈接。

0

我認爲bellow代碼段會對你有所幫助。

class Product < ApplicationRecord 
enum type: [:book, :magazine] 
end 

class Book < Product 
    before_create :set_type 

    private 
    def set_type 
    self.type = :book.to_s 
    end 
end 

class Magazine < Product 
    before_create :set_type 

    private 
    def set_type 
    self.type = :magazine.to_s 
end 
end