active_content 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/active_content/taxonomizable.rb +25 -7
- data/lib/active_content/version.rb +1 -1
- 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: 306cd17dcc26dec11f03cbb2962af633f19495a3
|
4
|
+
data.tar.gz: c3611f17322d2f19b4770f67452829af64ce03e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfce19e1777822256f60937738961432a9f6a142bfeaf1eb1d36bd98124359c660d2e66a4f834d8412f0fa8c60378d4e46c1f613b3006a8c28d689386fa913ae
|
7
|
+
data.tar.gz: ed7ec9961658fc85c4dea16d28061785e37ce91d0bfe2fb3f78fe1794e8d5e06860f93dd0896255953cc793a2c0887ddfeb9afac6715e724c23d67292a4d497f
|
@@ -12,34 +12,52 @@ module ActiveContent
|
|
12
12
|
has_many name, options
|
13
13
|
|
14
14
|
define_method :"#{name}_list" do
|
15
|
-
self.send
|
15
|
+
self.send(name).pluck(:name)
|
16
16
|
end
|
17
17
|
|
18
|
-
define_method :"#{name}_list=" do
|
18
|
+
define_method :"#{name}_list=" do |*names|
|
19
19
|
model = options[:class_name].classify.constantize
|
20
|
-
|
20
|
+
items = names.flatten.reject(&:blank?).map do |n|
|
21
21
|
model.find_by_name(n) || model.new(name: n)
|
22
22
|
end
|
23
23
|
|
24
|
-
self.send :"#{name}=",
|
24
|
+
self.send :"#{name}=", items
|
25
25
|
end
|
26
26
|
|
27
27
|
scope :"with_#{name}", -> (*ids) do
|
28
|
-
|
28
|
+
params = ids.flatten
|
29
|
+
query = joins(:"#{name}")
|
30
|
+
query = query.where(taxonomies: { id: params }) if params.any?
|
31
|
+
|
32
|
+
query.distinct(true)
|
29
33
|
end
|
30
34
|
|
31
35
|
scope :"without_#{name}", -> (*ids) do
|
32
|
-
joins(name).where.not(taxonomies: { id: ids })
|
36
|
+
joins(:"#{name}").where.not(taxonomies: { id: ids }).distinct(true)
|
33
37
|
end
|
34
38
|
end
|
35
39
|
|
36
40
|
def has_taxonomized(name, options={})
|
37
41
|
assoc_name = "#{name}".pluralize
|
38
42
|
assoc_field = options[:through] || self.name.parameterize.underscore.pluralize
|
39
|
-
|
43
|
+
assoc_class = (options[:class_name] || "#{name}".classify).constantize.base_class
|
44
|
+
assoc_table = assoc_class.table_name
|
45
|
+
assoc_type = assoc_class.name
|
40
46
|
assoc_proc = -> { where taxonomizations: { field: assoc_field } }
|
41
47
|
|
42
48
|
has_many :"#{assoc_name}", assoc_proc, through: :taxonomizations, source: :taxonomizable, source_type: "#{assoc_type}"
|
49
|
+
|
50
|
+
scope :"with_#{assoc_name}", -> (*ids) do
|
51
|
+
params = ids.flatten
|
52
|
+
query = joins(:"#{assoc_name}")
|
53
|
+
query = query.where(assoc_table => { id: params }) if params.any?
|
54
|
+
|
55
|
+
query.distinct(true)
|
56
|
+
end
|
57
|
+
|
58
|
+
scope :"without_#{assoc_name}", -> (*ids) do
|
59
|
+
joins(:"#{assoc_name}").where.not(assoc_table => { id: ids }).distinct(true)
|
60
|
+
end
|
43
61
|
end
|
44
62
|
end
|
45
63
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_content
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Olibia Tsati
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-12-
|
12
|
+
date: 2017-12-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|