Module: Basho::ActiveRecord::Base
- Defined in:
- lib/basho/active_record/base.rb
Overview
ActiveRecordモデルに +basho+ / +basho_postal+ マクロを提供するモジュール。 +include Basho+ で自動的に extend される。
Instance Method Summary collapse
-
#basho(column) ⇒ void
自治体コードカラムから +city+, +prefecture+, +full_address+ メソッドと +with_basho+ スコープを定義する。.
-
#basho_postal(column, **mappings) ⇒ void
郵便番号カラムから +postal_address+ メソッドを定義する。 マッピングオプションを渡すと +before_save+ で住所カラムを自動入力する。.
Instance Method Details
#basho(column) ⇒ void
This method returns an undefined value.
自治体コードカラムから +city+, +prefecture+, +full_address+ メソッドと +with_basho+ スコープを定義する。
DBモードでは +belongs_to :basho_city+ と +has_one :basho_prefecture+ を追加し、 +with_basho+ スコープでN+1クエリを防止する。 メモリモードでは +with_basho+ はno-op(+all+)となる。
27 28 29 30 31 |
# File 'lib/basho/active_record/base.rb', line 27 def basho(column) column_name = column.to_s Basho.db? ? basho_db_mode(column_name) : basho_memory_mode(column_name) basho_define_full_address end |
#basho_postal(column, **mappings) ⇒ void
This method returns an undefined value.
郵便番号カラムから +postal_address+ メソッドを定義する。 マッピングオプションを渡すと +before_save+ で住所カラムを自動入力する。
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/basho/active_record/base.rb', line 44 def basho_postal(column, **mappings) column_name = column.to_s define_method(:postal_address) do code = send(column_name) return nil unless code postal = Basho::PostalCode.find(code) return nil unless postal "#{postal.prefecture_name}#{postal.city_name}#{postal.town}" end PostalAutoResolve.install(self, column_name, mappings) if mappings.any? end |