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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 81339ecd1014291cbeec5f9e4aa44f09fe5b62fa
4
- data.tar.gz: 26bc41b698ba4fa90dd625e29c9b19baa3567586
3
+ metadata.gz: 306cd17dcc26dec11f03cbb2962af633f19495a3
4
+ data.tar.gz: c3611f17322d2f19b4770f67452829af64ce03e9
5
5
  SHA512:
6
- metadata.gz: a1ab2114fea295f0896334dae25f483df959c52e8d2bde5162e21227fd62b5f12620762c133168860e7bf2c2c1657278f930d4378cc877e8a073453090ac6eb0
7
- data.tar.gz: dc6d428ce4719d6515e419166ba2bda756bae210e8d122cb5f0255f17efaa7541f13bebd808c4c4c7f5e85de441bffa651b78f70ce255576cd165fb9e501eb60
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 name
15
+ self.send(name).pluck(:name)
16
16
  end
17
17
 
18
- define_method :"#{name}_list=" do |names|
18
+ define_method :"#{name}_list=" do |*names|
19
19
  model = options[:class_name].classify.constantize
20
- names = Array(names).map do |n|
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}=", names
24
+ self.send :"#{name}=", items
25
25
  end
26
26
 
27
27
  scope :"with_#{name}", -> (*ids) do
28
- joins(name).where(taxonomies: { id: ids })
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
- assoc_type = (options[:class_name] || "#{name}".classify).constantize.base_class.name
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
@@ -1,3 +1,3 @@
1
1
  module ActiveContent
2
- VERSION = '0.1.5'
2
+ VERSION = '0.1.6'
3
3
  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.5
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-11 00:00:00.000000000 Z
12
+ date: 2017-12-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord