ar_virtual_field 1.0.3 → 1.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9f6b9d601a90882d8d86e8d4302a3bbb9e3df01747cdafcf8eb977773c09094a
4
- data.tar.gz: f2b8e6d867cbab39c9f4146c6f2ff7f31b230af9a731d9bd4d8f3a29e2d7de44
3
+ metadata.gz: 3573b641de5d8ca9e66a830c8520daa343b81921d017f1d1a2a647fda62f752e
4
+ data.tar.gz: 82235a8808ee0be83d4f73ed60b9e4890457d7637c58046956d51af2f59936c0
5
5
  SHA512:
6
- metadata.gz: 4fabf0f3a9821b7e9a936b1b3b1e2f67ffafd201f0a14ea50f0d66d84ddf5f4ad2b726834a9418b682f50d1be46b23c88a07b4faa1b4bc743ccfa771edd60cb6
7
- data.tar.gz: 9afb9f76f1d61fce21a055e551882d0099493c86cbc98ddfc10f89b61d4d8de89877dbae1ea54366bfd20b8ac4be9d59b55371d15da5525f6190a50dbbecaf89
6
+ metadata.gz: 79dd5519c4df2e0f96b57655a1a8930dbd8f6ef51d1c5cfb656788ef4112146b812c224e4f12e36d6e17c08b825a2c9a684c28781496530b8462830019d3f4da
7
+ data.tar.gz: 87be5a85c0646709364aba3484c261a927e4419d361bfbd6dfdf5225c63dd7cddab9a55611978581605cb1f96a7800f64d267bdb5c3ba2beb1d1557968fe2d63
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ArVirtualField
4
- VERSION = "1.0.3"
4
+ VERSION = "1.0.5"
5
5
  end
@@ -61,18 +61,10 @@ module ArVirtualField
61
61
 
62
62
  select = HelperMethods.wrap_to_lambda(select)
63
63
 
64
- select_lambda = -> do
65
- if default
66
- Arel::Nodes::NamedFunction.new('COALESCE', [select.(), default.()])
67
- else
68
- select.()
69
- end
70
- end
71
-
72
64
  if scope
73
65
  field_name = Arel.sql(HelperMethods.table_with_column(name))
74
66
 
75
- @ar_virtual_fields[name.to_sym] =
67
+ select_lambda =
76
68
  if default
77
69
  -> { Arel::Nodes::NamedFunction.new('COALESCE', [field_name, default.()]) }
78
70
  else
@@ -86,9 +78,9 @@ module ArVirtualField
86
78
  scope(:"with_#{name}", -> do
87
79
  scope_query = current_class
88
80
  .send(scope_name)
89
- .select(select_lambda.().as(name), "#{table_name}.id")
81
+ .select(select.().as(name), "#{table_name}.id")
90
82
 
91
- HelperMethods.select_append(joins(<<~SQL.squish), "#{HelperMethods.table_with_column(name)} AS #{name}")
83
+ HelperMethods.select_append(joins(<<~SQL.squish), select_lambda.().as(name))
92
84
  LEFT JOIN (#{scope_query.to_sql}) #{HelperMethods.table_name(name)}
93
85
  ON #{
94
86
  Array(primary_key).map do |pk|
@@ -98,13 +90,20 @@ module ArVirtualField
98
90
  SQL
99
91
  end)
100
92
  else
101
- @ar_virtual_fields[name.to_sym] = -> { select_lambda.() }
93
+ select_lambda =
94
+ if default
95
+ -> { Arel::Nodes::NamedFunction.new('COALESCE', [select.(), default.()]) }
96
+ else
97
+ select
98
+ end
102
99
 
103
100
  scope(:"with_#{name}", -> do
104
101
  HelperMethods.select_append(self, select_lambda.().as(name))
105
102
  end)
106
103
  end
107
104
 
105
+ @ar_virtual_fields[name.to_sym] = select_lambda
106
+
108
107
  method_name = :"ar_virtual_field_#{name}"
109
108
 
110
109
  define_method(method_name, &get)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ar_virtual_field
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Egorov