leases 1.1.1 → 1.2.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.
- checksums.yaml +4 -4
- data/.travis.yml +0 -1
- data/README.md +0 -1
- data/lib/leases.rb +2 -6
- data/lib/leases/model/base.rb +39 -3
- data/lib/leases/version.rb +1 -1
- data/spec/leases/model/base_spec.rb +37 -0
- data/spec/leases_spec.rb +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb8fbe7ce60a87fdba0e7ea0ce8159420f150d69
|
4
|
+
data.tar.gz: 975345ad77583f621310fe30cabf2d7ff3b61e06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f0ecf0a18ff3eced2ec6043bb459039df5b3334572e424ac1183fe9d0b806b4b11ed3af9df10562ce4a19cb89b1291cd9c7ca986e63218ae394cc9e5f7e225b8
|
7
|
+
data.tar.gz: a6f4c00e62892417ccecc73c76f109cc165b7ebb560c148f75745b966fb58b28634b8e079ebde37cdb6aa97d26ba51e902ef4d13f8e3d86c44d730416ae99bf8
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
data/lib/leases.rb
CHANGED
@@ -21,8 +21,6 @@ module Leases
|
|
21
21
|
self.leasers << object.name
|
22
22
|
self.leasers.uniq!
|
23
23
|
|
24
|
-
Apartment.tenant_names = Proc.new { Leases.leaser_names }
|
25
|
-
|
26
24
|
object
|
27
25
|
end
|
28
26
|
|
@@ -37,12 +35,10 @@ module Leases
|
|
37
35
|
#
|
38
36
|
# [Array] List of leaser names
|
39
37
|
#
|
40
|
-
def leaser_names
|
41
|
-
Rails.application.eager_load! if preload
|
42
|
-
|
38
|
+
def leaser_names
|
43
39
|
leasers.map do |l|
|
44
40
|
model = l.constantize
|
45
|
-
model.
|
41
|
+
model.leaser_names
|
46
42
|
end.flatten
|
47
43
|
end
|
48
44
|
|
data/lib/leases/model/base.rb
CHANGED
@@ -11,6 +11,42 @@ module Leases
|
|
11
11
|
|
12
12
|
end
|
13
13
|
|
14
|
+
module ClassMethods
|
15
|
+
|
16
|
+
##
|
17
|
+
# Returns array of leaser names (schema names).
|
18
|
+
#
|
19
|
+
# === Example
|
20
|
+
#
|
21
|
+
# Account.leaser_names # => ['account-1', 'account-2']
|
22
|
+
#
|
23
|
+
# === Returns
|
24
|
+
#
|
25
|
+
# [Array] List of leaser names
|
26
|
+
#
|
27
|
+
def leaser_names
|
28
|
+
name = self.leases_options[:name]
|
29
|
+
|
30
|
+
if name.is_a?(Symbol)
|
31
|
+
# Simply pluck the column
|
32
|
+
self.pluck(name)
|
33
|
+
elsif name.is_a?(Proc)
|
34
|
+
# Name is a proc, find record in matches
|
35
|
+
names = []
|
36
|
+
self.find_each do |object|
|
37
|
+
names << object.leaser_name
|
38
|
+
end
|
39
|
+
names
|
40
|
+
else
|
41
|
+
# Default option: pluck ids and prefix it
|
42
|
+
prefix = self.name.parameterize
|
43
|
+
ids = self.pluck(:id)
|
44
|
+
ids.collect { |id| [prefix, id].join('-') }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
14
50
|
##
|
15
51
|
# Name of the leaser, used for naming the database.
|
16
52
|
# This can be set in the leaser_options. Must be unique.
|
@@ -18,12 +54,12 @@ module Leases
|
|
18
54
|
def leaser_name
|
19
55
|
name = self.class.leases_options[:name]
|
20
56
|
|
21
|
-
if name.
|
22
|
-
[self.class.name.parameterize, id].join('-')
|
23
|
-
elsif name.is_a?(Symbol)
|
57
|
+
if name.is_a?(Symbol)
|
24
58
|
send(name)
|
25
59
|
elsif name.is_a?(Proc)
|
26
60
|
name.call(self)
|
61
|
+
else
|
62
|
+
[self.class.name.parameterize, id].join('-')
|
27
63
|
end
|
28
64
|
end
|
29
65
|
|
data/lib/leases/version.rb
CHANGED
@@ -17,6 +17,43 @@ describe Leases::Model::Base do
|
|
17
17
|
|
18
18
|
subject { account }
|
19
19
|
|
20
|
+
describe :leaser_names do
|
21
|
+
|
22
|
+
let!(:account_1) { Account.create(:name => 'John Doe', :slug => 'john-doe') }
|
23
|
+
let!(:account_2) { Account.create(:name => 'Jane Doe', :slug => 'jane-doe') }
|
24
|
+
|
25
|
+
context 'with default' do
|
26
|
+
|
27
|
+
let(:options) { {} }
|
28
|
+
|
29
|
+
it 'should return list of names' do
|
30
|
+
Account.leaser_names.should == ["account-#{account_1.id}", "account-#{account_2.id}"]
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'with symbol' do
|
36
|
+
|
37
|
+
let(:options) { { :name => :slug } }
|
38
|
+
|
39
|
+
it 'should return list of names' do
|
40
|
+
Account.leaser_names.should == ['john-doe', 'jane-doe']
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'with proc' do
|
46
|
+
|
47
|
+
let(:options) { { :name => Proc.new { |a| [a.id, a.name].join('-') } } }
|
48
|
+
|
49
|
+
it 'should return list of names' do
|
50
|
+
Account.leaser_names.should == ["#{account_1.id}-#{account_1.name}", "#{account_2.id}-#{account_2.name}"]
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
20
57
|
describe :leaser_name do
|
21
58
|
|
22
59
|
context 'default' do
|
data/spec/leases_spec.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: leases
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arjen Oosterkamp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|