china_region_fu 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ doc
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in china_region_fu.gemspec
4
+ gemspec
data/README.rdoc ADDED
@@ -0,0 +1,62 @@
1
+ = ChinaRegionFu
2
+
3
+ ChinaRegionFu include the region data of china,and region CURD actions.Got ChinaRegionFu it means you got
4
+ a powerfull region controller system about china.
5
+
6
+
7
+ == Getting Started
8
+
9
+ 1. Put 'gem china_region_fu' to your Gemfile:
10
+
11
+ gem china_region_fu
12
+
13
+ 2. Run bundler command to install the gem:
14
+
15
+ bundle install
16
+
17
+ 3. After you install the gem, you need run the generator:
18
+
19
+ rails g china_region_fu:install
20
+
21
+ It will:
22
+ * Generate <em>db/migrate/<timestamp>create_china_region_tables.rb</em> migrate file to your app, *_china_regions_* table is used for store the regions.
23
+ * Copy regions.yml to config/ directory.
24
+ * Run "rake db:migrate".
25
+ * Run "rake region:import".
26
+
27
+ Now you have there ActiveRecord modules: <b>Province, City, District</b>.
28
+
29
+ Run with <em>rails g</em> for get generator list.
30
+
31
+ 4. If you want to customize the region modules you can run the generator:
32
+ rails g china_region_fu:mvc
33
+
34
+ This will create:
35
+
36
+ create app/models/province.rb
37
+ create app/models/city.rb
38
+ create app/models/district.rb
39
+
40
+ So you can do what you want to do in this files.
41
+
42
+ 5. Examples
43
+
44
+ a = Province.last
45
+ a.name # => "台湾省"
46
+ a.cities.map(&:name) # => ["嘉义市", "台南市", "新竹市", "台中市", "基隆市", "台北市"]
47
+
48
+ Province.first.districts.map(&:name) # => ["延庆县", "密云县", "平谷区", ...]
49
+
50
+ c = City.last
51
+ c.name # => "酒泉市"
52
+ c.districts.map(&:name) # => ["敦煌市", "玉门市", "阿克塞哈萨克族自治县", "肃北蒙古族自治县", "安西县", ...]
53
+ c.brothers.map(&:name) # => ["甘南藏族自治州", "临夏回族自治州", "陇南市", ...]
54
+
55
+ == Contributing
56
+
57
+ Xuhao <{rubyfans.com}[http://www.rubyfans.com]>.
58
+
59
+ == License
60
+
61
+ ChinaRegionFu is released under the MIT license.
62
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,17 @@
1
+ # -*- encoding: utf-8 -*-
2
+ class City < ActiveRecord::Base
3
+ attr_accessible :name, :province_id, :level, :zip_code, :pinyin, :pinyin_abbr
4
+
5
+ belongs_to :province
6
+ has_many :districts, :dependent => :destroy
7
+ has_many :hospitals, :dependent => :nullify
8
+
9
+ def short_name
10
+ @short_name ||= name.gsub(/市|自治州|地区|特别行政区/,'')
11
+ end
12
+
13
+ def brothers
14
+ @brothers ||= City.where("province_id = #{province_id}")
15
+ end
16
+
17
+ end
@@ -0,0 +1,16 @@
1
+ # -*- encoding: utf-8 -*-
2
+ class District < ActiveRecord::Base
3
+ attr_accessible :name, :city_id, :pinyin, :pinyin_abbr
4
+
5
+ belongs_to :city
6
+ has_many :hospitals, :dependent => :nullify
7
+
8
+ def short_name
9
+ @short_name ||= name.gsub(/区|县|市|自治县/,'')
10
+ end
11
+
12
+ def brothers
13
+ @brothers ||= District.where("city_id = #{city_id}")
14
+ end
15
+
16
+ end
@@ -0,0 +1,8 @@
1
+ # -*- encoding: utf-8 -*-
2
+ class Province < ActiveRecord::Base
3
+ attr_accessible :name, :pinyin, :pinyin_abbr
4
+
5
+ has_many :cities, :dependent => :destroy
6
+ has_many :districts, :through => :cities
7
+ has_many :hospitals, :dependent => :nullify
8
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "china_region_fu/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "china_region_fu"
7
+ s.version = ChinaRegionFu::VERSION
8
+ s.authors = ["xuhao"]
9
+ s.email = ["xuhao@rubyfans.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{china region}
12
+ s.description = %q{china region}
13
+
14
+ s.rubyforge_project = "china_region_fu"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+ end
@@ -0,0 +1,5 @@
1
+ require "rails"
2
+
3
+ module ChinaRegionFu
4
+ class Engine < Rails::Engine;end
5
+ end
@@ -0,0 +1,3 @@
1
+ module ChinaRegionFu
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,8 @@
1
+ require 'china_region_fu/engine' if defined? Rails
2
+
3
+ module ChinaRegionFu
4
+ YAML_FILE = File.expand_path('../../config/regions.yml', __FILE__)
5
+ end
6
+
7
+
8
+ require "china_region_fu/version"
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Explain the generator
3
+
4
+ Example:
5
+ rails generate china_region:fu:migration Thing
6
+
7
+ This will create:
8
+ db/migrate/create_china_region_tables.rb
@@ -0,0 +1,30 @@
1
+ module ChinaRegionFu
2
+ class InstallGenerator < Rails::Generators::Base
3
+ include Rails::Generators::Migration
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ def copy_migration_file
7
+ migration_template "migration.rb", "db/migrate/create_china_region_tables.rb"
8
+ end
9
+
10
+ def copy_region_config_file
11
+ copy_file 'regions.yml', 'config/regions.yml'
12
+ end
13
+
14
+ def execute_migrate
15
+ rake("db:migrate")
16
+ end
17
+
18
+ def import_region_to_data
19
+ rake('region:import')
20
+ end
21
+
22
+ def self.next_migration_number(dirname)
23
+ if ActiveRecord::Base.timestamped_migrations
24
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
25
+ else
26
+ "%.3d" % (current_migration_number(dirname) + 1)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,45 @@
1
+ class CreateChinaRegionTables < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :provinces do |t|
4
+ t.string :name
5
+ t.string :pinyin
6
+ t.string :pinyin_abbr
7
+ t.timestamps
8
+ end
9
+ create_table :cities do |t|
10
+ t.string :name
11
+ t.integer :province_id
12
+ t.integer :level
13
+ t.string :zip_code
14
+ t.string :pinyin
15
+ t.string :pinyin_abbr
16
+ t.timestamps
17
+ end
18
+ create_table :districts do |t|
19
+ t.string :name
20
+ t.integer :city_id
21
+ t.string :pinyin
22
+ t.string :pinyin_abbr
23
+ t.timestamps
24
+ end
25
+ add_index :districts, :name
26
+ add_index :districts, :city_id
27
+ add_index :districts, :pinyin
28
+ add_index :districts, :pinyin_abbr
29
+ add_index :cities, :name
30
+ add_index :cities, :province_id
31
+ add_index :cities, :level
32
+ add_index :cities, :zip_code
33
+ add_index :cities, :pinyin
34
+ add_index :cities, :pinyin_abbr
35
+ add_index :provinces, :name
36
+ add_index :provinces, :pinyin
37
+ add_index :provinces, :pinyin_abbr
38
+ end
39
+
40
+
41
+ def self.down
42
+ drop_table :provinces, :cities, :districts
43
+ end
44
+
45
+ end