Commit 3dc64cce7b20df930eee219ba64cecf72fe5245c

Authored by ikeqiao
1 parent 615b784c
Exists in master

Add Class Method MagicField.datatypes and re-define pretty_name can be set

lib/app/models/magic_field.rb
... ... @@ -6,6 +6,12 @@ class MagicField < ActiveRecord::Base
6 6 validates_presence_of :name, :datatype
7 7 validates_format_of :name, :with => /\A[a-z][a-z0-9_]+\z/
8 8  
  9 + before_save :set_pretty_name
  10 +
  11 + def self.datatypes
  12 + ["check_box_boolean", "date", "datetime", "integer"]
  13 + end
  14 +
9 15 def type_cast(value)
10 16 begin
11 17 case datatype.to_sym
... ... @@ -26,10 +32,8 @@ class MagicField < ActiveRecord::Base
26 32 end
27 33  
28 34 # Display a nicer (possibly user-defined) name for the column or use a fancified default.
29   - def pretty_name
30   - super || name.humanize
  35 + def set_pretty_name
  36 + self.pretty_name = name.humanize if pretty_name.blank?
31 37 end
32   -
33   -
34 38  
35 39 end
... ...
spec/has_magic_fields/magic_fileds_spec.rb
... ... @@ -139,4 +139,12 @@ describe HasMagicFields do
139 139 expect(lambda{@account.create_magic_filed(:name => 'salary')}).not_to raise_error
140 140 end
141 141 end
  142 +
  143 + context "magic_field class method" do
  144 + it "datatypes method" do
  145 + expect(MagicField.datatypes.class).to be(Array)
  146 + expect(MagicField.datatypes.size).to eq(4)
  147 + expect(MagicField.datatypes.first).to eq("check_box_boolean")
  148 + end
  149 + end
142 150 end
... ...