informal 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -60,6 +60,31 @@ Make your own `#initialize` method, and in that you can assign the attributes
60
60
  using the `#attributes=` method and also call super with whatever args are
61
61
  needed.
62
62
 
63
+ ## Overriding the `model_name`
64
+
65
+ If you name your model `InformalCommand`, form params get passed to your controller
66
+ in the `params[:informal_command]` hash. As that's a bit ugly and perhaps doesn't
67
+ play well with standing in for a real ActiveRecord model, Informal provides a
68
+ method to override the model name.
69
+
70
+ class InformalCommand
71
+ informal_model_name "Command"
72
+ # ...
73
+ end
74
+
75
+ Note: the `informal_model_name` feature is available only in Rails 3.1 or greater
76
+ (unless somebody back-ports the required API change to 3.0.x).
77
+
78
+ ## Idiosyncrasies
79
+
80
+ The standard way that Rails generates ids for new records is to name them like
81
+ `command_new`, as opposed to `command_17` for persisted records. I've found that
82
+ when using informal models I often want more than one per page, and it's helpful
83
+ to have a unique id for JavaScript to use. Therefore Informal uses the model's
84
+ `object_id` to get a unique id for the record. Those ids in the DOM will look like
85
+ `command_2157193640`, which would be scary if you did anything with those memory
86
+ addresses except use them for attaching scripts.
87
+
63
88
  ## License
64
89
 
65
- Released under the MIT License. See the LICENSE file.
90
+ Copyright © 2011 Josh Susser. Released under the MIT License. See the LICENSE file.
@@ -20,4 +20,6 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ["lib"]
21
21
 
22
22
  s.add_dependency('activemodel', "~> 3.0")
23
+ # s.add_dependency('activemodel', "~> 3.0.0") # to test w/o 3.1 only features
24
+ # s.add_dependency('activemodel', "~> 3.1.0.rc4") # to test 3.1 only features, ex: informal_model_name
23
25
  end
@@ -5,11 +5,20 @@ module Informal
5
5
  klass.class_eval do
6
6
  extend ActiveModel::Naming
7
7
  include ActiveModel::Validations
8
+ extend ClassMethods
9
+ end
10
+ end
11
+
12
+ module ClassMethods
13
+ if ActiveModel::VERSION::MINOR > 0
14
+ def informal_model_name(name)
15
+ @_model_name = ActiveModel::Name.new(self, nil, name)
16
+ end
8
17
  end
9
18
  end
10
19
 
11
20
  def attributes=(attrs)
12
- attrs.each_pair { |name, value| self.send("#{name}=", value) }
21
+ attrs && attrs.each_pair { |name, value| self.send("#{name}=", value) }
13
22
  end
14
23
 
15
24
  def persisted?
@@ -1,3 +1,3 @@
1
1
  module Informal
2
- VERSION = "0.0.3"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -5,12 +5,20 @@ module ModelTestCases
5
5
  @model = self.poro_class.new(:x => 1, :y => 2)
6
6
  end
7
7
 
8
+ def teardown
9
+ self.poro_class.instance_variable_set(:@_model_name, nil)
10
+ end
11
+
8
12
  def test_new
9
13
  assert_equal 1, @model.x
10
14
  assert_equal 2, @model.y
11
15
  assert_nil @model.z
12
16
  end
13
17
 
18
+ def test_new_with_nil
19
+ assert_nothing_raised { self.poro_class.new(nil) }
20
+ end
21
+
14
22
  def test_persisted
15
23
  assert !@model.persisted?
16
24
  end
@@ -27,6 +35,13 @@ module ModelTestCases
27
35
  assert_equal "Poro", @model.class.model_name.human
28
36
  end
29
37
 
38
+ if ActiveModel::VERSION::MINOR > 0
39
+ def test_model_name_override
40
+ self.poro_class.informal_model_name("Alias")
41
+ assert_equal "Alias", @model.class.model_name.human
42
+ end
43
+ end
44
+
30
45
  def test_validations
31
46
  assert @model.invalid?
32
47
  assert_equal [], @model.errors[:x]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: informal
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 3
10
- version: 0.0.3
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Josh Susser
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-02 00:00:00 -07:00
19
- default_executable:
18
+ date: 2011-06-19 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: activemodel
@@ -57,7 +56,6 @@ files:
57
56
  - test/model_test.rb
58
57
  - test/model_test_cases.rb
59
58
  - test/test_helper.rb
60
- has_rdoc: true
61
59
  homepage: https://github.com/joshsusser/informal
62
60
  licenses: []
63
61
 
@@ -87,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
85
  requirements: []
88
86
 
89
87
  rubyforge_project: informal
90
- rubygems_version: 1.6.1
88
+ rubygems_version: 1.8.5
91
89
  signing_key:
92
90
  specification_version: 3
93
91
  summary: Easily use any Plain Old Ruby Object as the model for Rails form helpers.