easy_model 1.0.3 → 1.0.4

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/README.rdoc CHANGED
@@ -21,8 +21,8 @@ EasyModel::Base はデータベースに関連付かないモデルの基本ク
21
21
 
22
22
  end
23
23
 
24
- 属性を定義する場合は, 以下のように attr_accessor ではなく column メソッドを利用すると便利です.
25
- column メソッドを利用すると, 属性の型とデフォルト値を指定することができます.
24
+ 属性を定義する場合は, 以下のように attr_accessor ではなく column メソッドを使用します.
25
+ column メソッドを使用すると, 属性の型とデフォルト値を指定することができます.
26
26
 
27
27
  #
28
28
  # ログインフォーム.
@@ -60,8 +60,8 @@ column メソッドで定義した属性は, 代入時に ActiveRecord と同様
60
60
  login_form.remember # => false
61
61
  login_form.remember_before_type_cast # => 'false'
62
62
 
63
- データベースのテーブルに関連付いているモデルでも column メソッドを利用したい場合は,
64
- EasyModel::Column モジュールを include します.
63
+ EasyModel::Column モジュールを include することで,
64
+ EasyModel::Base を継承しないモデルでも column メソッドを使用することができます.
65
65
 
66
66
  class User < ActiveRecord::Base
67
67
 
@@ -71,7 +71,30 @@ EasyModel::Column モジュールを include します.
71
71
 
72
72
  end
73
73
 
74
+ == 国際化
74
75
 
76
+ 国際化は I18n で行われます.
77
+ デフォルトでは '<locale>.easy_model' 以下がルックアップされます.
78
+
79
+ ja:
80
+ easy_model:
81
+ models:
82
+ user_search_form: 会員検索フォーム
83
+ attributes:
84
+ user:
85
+ name: 会員名
86
+ status: ステータス
87
+
88
+ EasyModel::Base.i18n_scope を上書きすることで, ルックアップされるキーを変更することができます.
89
+ 例えば, ActiveRecord と同じキーを参照させたい場合は, 以下のように上書きします.
90
+
91
+ class UserSearchForm < EasyModel::Base
92
+
93
+ def self.i18n_scope
94
+ :activerecord
95
+ end
96
+
97
+ end
75
98
 
76
99
  == 検索フォーム
77
100
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.3
1
+ 1.0.4
data/easy_model.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "easy_model"
8
- s.version = "1.0.3"
8
+ s.version = "1.0.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["SUZUKI Kei"]
12
- s.date = "2012-07-30"
12
+ s.date = "2012-09-10"
13
13
  s.description = "\u{30c7}\u{30fc}\u{30bf}\u{30d9}\u{30fc}\u{30b9}\u{306b}\u{4f9d}\u{5b58}\u{3057}\u{306a}\u{3044}\u{30e2}\u{30c7}\u{30eb}\u{306e}\u{57fa}\u{672c}\u{30af}\u{30e9}\u{30b9}\u{3084}, ActiveRecord \u{3068}\u{540c}\u{3058}\u{578b}\u{5909}\u{63db}\u{3092}\u{884c}\u{3046}\u{5c5e}\u{6027}\u{5b9a}\u{7fa9}\u{30e1}\u{30bd}\u{30c3}\u{30c9}\u{3092}\u{63d0}\u{4f9b}\u{3057}\u{307e}\u{3059}."
14
14
  s.email = "info-techscore@synergy101.jp"
15
15
  s.extra_rdoc_files = [
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
27
27
  "lib/easy_model/base.rb",
28
28
  "lib/easy_model/column.rb",
29
29
  "lib/easy_model/search_form.rb",
30
+ "test/easy_model/ja.yml",
30
31
  "test/easy_model/test_base.rb",
31
32
  "test/easy_model/test_column.rb",
32
33
  "test/easy_model/test_search_form.rb",
@@ -35,7 +36,7 @@ Gem::Specification.new do |s|
35
36
  s.homepage = "http://github.com/techscore/easy_model"
36
37
  s.licenses = ["BSD"]
37
38
  s.require_paths = ["lib"]
38
- s.rubygems_version = "1.8.15"
39
+ s.rubygems_version = "1.8.24"
39
40
  s.summary = "\u{30c7}\u{30fc}\u{30bf}\u{30d9}\u{30fc}\u{30b9}\u{306b}\u{4f9d}\u{5b58}\u{3057}\u{306a}\u{3044}\u{30e2}\u{30c7}\u{30eb}\u{306e}\u{57fa}\u{672c}\u{30af}\u{30e9}\u{30b9}\u{3084}, ActiveRecord \u{3068}\u{540c}\u{3058}\u{578b}\u{5909}\u{63db}\u{3092}\u{884c}\u{3046}\u{5c5e}\u{6027}\u{5b9a}\u{7fa9}\u{30e1}\u{30bd}\u{30c3}\u{30c9}\u{3092}\u{63d0}\u{4f9b}\u{3057}\u{307e}\u{3059}."
40
41
 
41
42
  if s.respond_to? :specification_version then
@@ -12,15 +12,44 @@ class EasyModel::Base
12
12
  include ActiveModel::Validations
13
13
  include EasyModel::Column
14
14
 
15
+ #
16
+ # ロケールファイルからルックアップするときのキー.
17
+ #
18
+ def self.i18n_scope
19
+ :easy_model
20
+ end
21
+
15
22
  #
16
23
  # 指定された属性値で初期化する.
17
24
  #
18
25
  # ==== 引数
19
26
  # attributes::
20
- # 属性値を保持する Hash.
27
+ # 属性名と属性値を保持する Hash.
21
28
  #
22
29
  def initialize(attributes=nil)
23
- (attributes || {}).each do |name, value|
30
+ assign_attributes(attributes)
31
+ end
32
+
33
+ #
34
+ # 属性を一括代入する.
35
+ #
36
+ # ==== 引数
37
+ # new_attributes::
38
+ # 属性名と属性値を保持する Hash.
39
+ #
40
+ def attributes=(new_attributes)
41
+ assign_attributes(new_attributes)
42
+ end
43
+
44
+ #
45
+ # 属性を一括代入する.
46
+ #
47
+ # ==== 引数
48
+ # new_attributes::
49
+ # 属性名と属性値を保持する Hash.
50
+ #
51
+ def assign_attributes(new_attributes)
52
+ (new_attributes || {}).each do |name, value|
24
53
  send("#{name}=", value)
25
54
  end
26
55
  end
@@ -0,0 +1,10 @@
1
+ ja:
2
+ easy_model:
3
+ models:
4
+ user: ユーザ
5
+ attributes:
6
+ user:
7
+ name: 名前
8
+ email: メールアドレス
9
+ age: 年齢
10
+
@@ -2,24 +2,45 @@
2
2
 
3
3
  require File.join(File.dirname(__FILE__), '..', 'helper')
4
4
 
5
+ class User < EasyModel::Base
6
+ column :name, :string
7
+ column :email, :string
8
+ column :age, :integer
9
+ end
10
+
5
11
  class EasyModel::TestBase < Test::Unit::TestCase
6
12
 
13
+ def setup
14
+ I18n.load_path = [File.join(File.dirname(__FILE__), 'ja.yml')]
15
+ I18n.default_locale = :ja
16
+ end
17
+
7
18
  def test_initialize
8
- model = Class.new(EasyModel::Base)
9
- model.send(:column, :name, :string)
10
- model.send(:column, :email, :string)
11
- model.send(:column, :age, :integer)
12
-
13
- object = model.new(:name => 'taro', :email => 'taro@example.com', :age => 20)
14
- assert_equal 'taro', object.name
15
- assert_equal 'taro@example.com', object.email
16
- assert_equal 20, object.age
19
+ user = User.new(:name => 'taro', :email => 'taro@example.com', :age => 20)
20
+ assert_equal 'taro', user.name
21
+ assert_equal 'taro@example.com', user.email
22
+ assert_equal 20, user.age
23
+ end
24
+
25
+ def test_attributes=
26
+ user = User.new
27
+ user.attributes = {:name => 'taro', :email => 'taro@example.com', :age => 20}
28
+ assert_equal 'taro', user.name
29
+ assert_equal 'taro@example.com', user.email
30
+ assert_equal 20, user.age
31
+ end
32
+
33
+ def test_i18n_scope
34
+ assert_equal :easy_model, User.i18n_scope
35
+ assert_equal 'ユーザ', User.model_name.human
36
+ assert_equal '名前', User.human_attribute_name(:name)
37
+ assert_equal 'メールアドレス', User.human_attribute_name(:email)
38
+ assert_equal '年齢', User.human_attribute_name(:age)
17
39
  end
18
40
 
19
41
  def test_persisted?
20
- model = Class.new(EasyModel::Base)
21
- object = model.new
22
- assert_equal false, object.persisted?
42
+ user = User.new
43
+ assert_equal false, user.persisted?
23
44
  end
24
45
 
25
46
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-30 00:00:00.000000000 Z
12
+ date: 2012-09-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel
16
- requirement: &71228770 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *71228770
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.0.0
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: activerecord
27
- requirement: &71228330 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 3.0.0
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *71228330
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 3.0.0
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: rdoc
38
- requirement: &71227660 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '3.12'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *71227660
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '3.12'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: bundler
49
- requirement: &71226630 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: 1.0.0
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *71226630
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 1.0.0
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: jeweler
60
- requirement: &71225660 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: 1.8.4
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *71225660
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 1.8.4
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: simplecov
71
- requirement: &71224630 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,7 +101,12 @@ dependencies:
76
101
  version: '0'
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *71224630
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  description: データベースに依存しないモデルの基本クラスや, ActiveRecord と同じ型変換を行う属性定義メソッドを提供します.
81
111
  email: info-techscore@synergy101.jp
82
112
  executables: []
@@ -95,6 +125,7 @@ files:
95
125
  - lib/easy_model/base.rb
96
126
  - lib/easy_model/column.rb
97
127
  - lib/easy_model/search_form.rb
128
+ - test/easy_model/ja.yml
98
129
  - test/easy_model/test_base.rb
99
130
  - test/easy_model/test_column.rb
100
131
  - test/easy_model/test_search_form.rb
@@ -114,7 +145,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
145
  version: '0'
115
146
  segments:
116
147
  - 0
117
- hash: -442526499
148
+ hash: -208701485
118
149
  required_rubygems_version: !ruby/object:Gem::Requirement
119
150
  none: false
120
151
  requirements:
@@ -123,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
154
  version: '0'
124
155
  requirements: []
125
156
  rubyforge_project:
126
- rubygems_version: 1.8.15
157
+ rubygems_version: 1.8.24
127
158
  signing_key:
128
159
  specification_version: 3
129
160
  summary: データベースに依存しないモデルの基本クラスや, ActiveRecord と同じ型変換を行う属性定義メソッドを提供します.