2011-02-08 9 views
0

私はそれ以外の湿ったコードにDRYしていますが、アドレスを使用するさまざまなクラス間でいくつかのアドレスメソッドを共有しています。これらをモジュールに入れようとしていますが、私がしたいことは以下の通りですが、私は2つの事について不明です。まず、このモジュールを含むクラスのアドレスを使用して動作し、次にADDRESS_TYPESを追加する場所が不明です。レール、モジュール、クエリ、私?

module AddressModule 
    class << self 
    def delivery_address 
     where(address_type: ADDRESS_TYPES.delivery) 
    end 

    def billing_address 
     where(address_type: ADDRESS_TYPES.billing) 
    end 
    end 
end 

第3に、上記のコードは、たとえばアカウントクラスに含まれているときにすべて意味がありますか?私ははるかに簡単なものになってしまった

答えて

0

...

has_many :addresses, :as => :addressable, :dependent => :destroy 

    has_one :billing_address, :as => :addressable 
    validates :billing_address, presence:true 
    accepts_nested_attributes_for :billing_address, 
    :allow_destroy => true, 
    :reject_if  => missing_attrs?('street_one', 'zip', 'city', 'country_id') 

    has_one :delivery_address, :as => :addressable 
    validates :delivery_address, presence:true 
    accepts_nested_attributes_for :delivery_address, 
    :allow_destroy => true, 
    :reject_if  => missing_attrs?('street_one', 'zip', 'city', 'country_id')