rails_dictionary 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc
CHANGED
@@ -103,7 +103,7 @@ In short,when you confused with the debug data,try running "rails tmp:clear" fir
|
|
103
103
|
|
104
104
|
= TODO & Problems
|
105
105
|
There are no convention and implemention to map Class like Ckeditor::Asset to a method.
|
106
|
-
Add generators.
|
106
|
+
Add generators. Rewrite Testing,make it more maintainable.
|
107
107
|
|
108
108
|
= Help
|
109
109
|
Need an friendly english native guy to help me improve this readme to make it more clear and readable.
|
@@ -9,7 +9,15 @@ module ActsAsDictionary
|
|
9
9
|
belongs_to :dict_type
|
10
10
|
after_save :delete_dicts_cache
|
11
11
|
after_destroy :delete_dicts_cache
|
12
|
-
|
12
|
+
|
13
|
+
# Return an instance of array
|
14
|
+
def dict_type_name_eq(method_name)
|
15
|
+
joins(:dict_type).where("dict_types.name" => method_name).all
|
16
|
+
end
|
17
|
+
#Following design is not successed with sqlite3 in test
|
18
|
+
# scope :dict_type_name_eq,lambda {|method_name| joins(:dict_type).where("dict_types.name" => method_name)}
|
19
|
+
# remove the all seems not pass test,return following errors
|
20
|
+
# TypeError: no marshal_dump is defined for class SQLite3::Database
|
13
21
|
include InstanceMethods
|
14
22
|
# Generate methods like Dictionary.student_city
|
15
23
|
# Dictionary.student_city - a list of dictionary object which dict type is student_city
|
@@ -19,8 +27,9 @@ module ActsAsDictionary
|
|
19
27
|
def self.method_missing(method_id,options={},&block)
|
20
28
|
method_name=method_id.to_s.downcase
|
21
29
|
if DictType.all_types.include? method_id.to_s
|
22
|
-
Rails.cache.fetch("Dictionary.#{method_name}") {
|
30
|
+
Rails.cache.fetch("Dictionary.#{method_name}") { dict_type_name_eq(method_name) }
|
23
31
|
listed_attr=Rails.cache.read("Dictionary.#{method_name}").dup
|
32
|
+
# Instance of activerelation can not be dup?
|
24
33
|
if options.keys.include? :locale or options.keys.include? "locale"
|
25
34
|
locale="name_#{ options[:locale] }"
|
26
35
|
listed_attr.map! { |a| [a.send(locale),a.id] }
|
@@ -95,14 +95,6 @@ class DictTypeTest < Test::Unit::TestCase
|
|
95
95
|
assert_equal "student_school",DictType.revert(@dt_stu_school.id)
|
96
96
|
end
|
97
97
|
|
98
|
-
def test_dictionary_method_missing
|
99
|
-
assert_equal [["shanghai",1],["beijing",2]],Dictionary.student_city(:locale => :en)
|
100
|
-
end
|
101
|
-
|
102
|
-
def test_dictionary_method_missing_with_locale
|
103
|
-
assert_equal [["上海", 1], ["北京", 2]],Dictionary.student_city(:locale => :zh)
|
104
|
-
end
|
105
|
-
|
106
98
|
# test dynamic instance methods in slave model
|
107
99
|
def test_named_city
|
108
100
|
Student.acts_as_dict_slave
|
@@ -119,6 +111,14 @@ class DictTypeTest < Test::Unit::TestCase
|
|
119
111
|
assert_equal "Pékin",@stu_beijing.named_city
|
120
112
|
end
|
121
113
|
|
114
|
+
def test_dictionary_method_missing
|
115
|
+
assert_equal [["shanghai",1],["beijing",2]],Dictionary.student_city(:locale => :en)
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_dictionary_method_missing_with_locale
|
119
|
+
assert_equal [["上海", 1], ["北京", 2]],Dictionary.student_city(:locale => :zh)
|
120
|
+
end
|
121
|
+
|
122
122
|
def test_delete_dicts_cache
|
123
123
|
@dy_wuhan=Dictionary.create! name_en: "wuhan",name_zh: "武汉",name_fr: "wuhan",dict_type_id: @dt_stu_city.id
|
124
124
|
assert_equal [["shanghai", 1], ["beijing", 2], ["wuhan", 3]],Dictionary.student_city(:locale => :en)
|