friendly-attributes 0.4.0 → 0.5.0
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/CHANGELOG.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
### 0.5.0
|
5
|
+
|
6
|
+
* (ihoka) Added configurable active_record_key to the FriendlyDetails model. active_record_key affects the name of the generated Friendly index table and the attribute in which the ActiveRecord model ID is stored. It defaults to :active_record_id.
|
7
|
+
|
8
|
+
### 0.4.0
|
9
|
+
|
10
|
+
* (ihoka) Added #attributes method to FriendlyAttributes::Details base class.
|
11
|
+
|
4
12
|
### 0.3.2
|
5
13
|
|
6
14
|
* (ihoka) Added description to spec matcher.
|
@@ -3,9 +3,14 @@ module FriendlyAttributes
|
|
3
3
|
def friendly_details(*args, &block)
|
4
4
|
klass = args.shift
|
5
5
|
options = args.extract_options!
|
6
|
+
attributes = args.extract_options!
|
7
|
+
if attributes.empty?
|
8
|
+
attributes = options
|
9
|
+
options = {}
|
10
|
+
end
|
6
11
|
|
7
12
|
delegate_options = proc {
|
8
|
-
|
13
|
+
attributes.each do |key, value|
|
9
14
|
if Array === value
|
10
15
|
value.each { |v| delegated_attribute v, key }
|
11
16
|
else
|
@@ -14,7 +19,7 @@ module FriendlyAttributes
|
|
14
19
|
end
|
15
20
|
}
|
16
21
|
|
17
|
-
DetailsDelegator.new(klass, self, &block).tap do |dd|
|
22
|
+
DetailsDelegator.new(klass, self, options, &block).tap do |dd|
|
18
23
|
dd.instance_eval(&delegate_options)
|
19
24
|
end
|
20
25
|
end
|
@@ -2,7 +2,7 @@ module FriendlyAttributes
|
|
2
2
|
class Details
|
3
3
|
class << self
|
4
4
|
def find_or_build_by_active_record_id(active_record_id)
|
5
|
-
active_record_id && first(
|
5
|
+
active_record_id && first(active_record_key => active_record_id) || new(active_record_key => active_record_id)
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
@@ -4,16 +4,21 @@ module FriendlyAttributes
|
|
4
4
|
|
5
5
|
delegate :attribute, :indexes, :to => :friendly_model
|
6
6
|
|
7
|
-
def initialize(friendly_model, ar_model, &block)
|
7
|
+
def initialize(friendly_model, ar_model, options={}, &block)
|
8
8
|
@ar_model = ar_model
|
9
9
|
@friendly_model = friendly_model
|
10
10
|
|
11
|
+
_active_record_key = options.delete(:active_record_key) || :active_record_id
|
12
|
+
|
11
13
|
friendly_model.instance_eval do
|
12
14
|
include Friendly::Document
|
13
|
-
|
14
|
-
attribute
|
15
|
-
indexes
|
15
|
+
|
16
|
+
attribute _active_record_key, Integer
|
17
|
+
indexes _active_record_key
|
18
|
+
|
19
|
+
cattr_accessor :active_record_key
|
16
20
|
end
|
21
|
+
friendly_model.active_record_key = _active_record_key
|
17
22
|
|
18
23
|
ar_model.class_eval do
|
19
24
|
cattr_accessor :friendly_model
|
@@ -14,7 +14,7 @@ module FriendlyAttributes
|
|
14
14
|
|
15
15
|
def update_friendly_details
|
16
16
|
return unless details_present?
|
17
|
-
details.
|
17
|
+
details.send(:"#{details.active_record_key}=", id) unless details.send(details.active_record_key) == id
|
18
18
|
details.save if details.changed?
|
19
19
|
end
|
20
20
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: friendly-attributes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 5
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.5.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Istvan Hoka
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-26 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|