local_model 0.1.5 → 0.1.6

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: f853000f33467ac6f85e87035eecfcd676640fc6bbaf05457a61637604c9f005
4
- data.tar.gz: f33774550c04178eb2083f9a1c008b1d6e548454a9134077a345a822c274fb27
3
+ metadata.gz: 1e2e9ec418cbe408265a42042295c4bc6a7a48aa3235529bb0f4e8f3ab2a32d1
4
+ data.tar.gz: 61b515ff1fcb5794737a67fff0c13d70f6062cc8a952167920e828e61d2ce70e
5
5
  SHA512:
6
- metadata.gz: 7a66632adc5f6c61c0f4d2f9153df4af34427e03cb3dccdcef59c6f4f6fabcdada61e7071ec0b3f4a85679830f57f48f120863677d0077826cf1961ddd55d847
7
- data.tar.gz: 0e38bf60d7b826a97b4b7f7db53740ad3b532cb054dc843eb58f1e4f770cd57b73c915f4ab252d7aeac5b2784192f3d3d32aabd34bce2e6b570ccd09ced43714
6
+ metadata.gz: e1960d07ccc9f2ce66f394279449985c446a4d4faf613aac69b5be56dfad9ecabc9e1c857508e52d87e4b5d756c2317eab46fbf551a81de69756b60cbd18fd39
7
+ data.tar.gz: e5c4ea1b2c503f5a2e5ffcb9cce1976a388df2d57eb56606a550704891e8a53035929ff71654aebf07a6bd070436dd92ac8e946d6d211a32dd3e864dd01db97e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- local_model (0.1.4)
4
+ local_model (0.1.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -13,7 +13,6 @@ class LocalModel::Model
13
13
  else
14
14
  association_class_name = namespace_classname(class_name)
15
15
  end
16
- association_class = Object.const_get(association_class_name)
17
16
 
18
17
  if foreign_key.nil?
19
18
  keyname = "#{association}_id"
@@ -22,6 +21,7 @@ class LocalModel::Model
22
21
  end
23
22
 
24
23
  define_method association do
24
+ association_class = Object.const_get(association_class_name)
25
25
  id = self.send(keyname)
26
26
  association_class.find(id)
27
27
  end
@@ -38,37 +38,47 @@ class LocalModel::Model
38
38
  association_classname = namespace_classname(class_name)
39
39
  end
40
40
 
41
- current_class_id_methodname = foreign_key || "#{LocalModel::Functions.camel_to_snake(denamespace_classname(self))}_id"
42
- belongs_to_id_sym = current_class_id_methodname.to_sym
43
41
 
44
42
  if through.nil?
43
+ current_class_id_methodname = foreign_key || "#{LocalModel::Functions.camel_to_snake(denamespace_classname(self))}_id"
44
+ belongs_to_id_sym = current_class_id_methodname.to_sym
45
45
  define_method association do
46
46
  association_class = Object.const_get(association_classname)
47
47
  association_class.where(belongs_to_id_sym => self.id)
48
48
  end
49
49
  else
50
- through_classname = namespace_classname(get_classname_from_association(through))
50
+ current_class_id_methodname = foreign_key || "#{LocalModel::Functions.camel_to_snake(LocalModel::Functions.singularize(association))}_id"
51
+ belongs_to_id_sym = current_class_id_methodname.to_sym
51
52
  define_method association do
52
- through_class = Object.const_get(through_classname)
53
- through_class.where(belongs_to_id_sym => self.id).map{|obj| obj.send(LocalModel::Functions.singularize(association))}
53
+ association_class = Object.const_get(association_classname)
54
+ self.send(through).map{|through_obj| association_class.find(through_obj.send(belongs_to_id_sym))}
54
55
  end
55
56
  end
56
57
  end
57
58
 
58
- def self.has_one(association, class_name: nil, foreign_key: nil)
59
+ def self.has_one(association, through: nil, class_name: nil, foreign_key: nil)
59
60
  if class_name.nil?
60
61
  association_classname = LocalModel::Functions.snake_to_camel(association)
61
62
  association_classname[0] = association_classname[0].upcase
62
63
  association_classname = namespace_classname(association_classname)
63
64
  else
64
- association_classname = class_name
65
+ association_classname = namespace_classname(class_name)
65
66
  end
66
- current_class_id_methodname = foreign_key || "#{LocalModel::Functions.camel_to_snake(denamespace_classname(self))}_id"
67
- belongs_to_id_sym = current_class_id_methodname.to_sym
68
67
 
69
- define_method association do
70
- association_class = Object.const_get(association_classname)
71
- association_class.where(belongs_to_id_sym => self.id).first
68
+ if through.nil?
69
+ current_class_id_methodname = foreign_key || "#{LocalModel::Functions.camel_to_snake(denamespace_classname(self))}_id"
70
+ belongs_to_id_sym = current_class_id_methodname.to_sym
71
+ define_method association do
72
+ association_class = Object.const_get(association_classname)
73
+ association_class.where(belongs_to_id_sym => self.id).first
74
+ end
75
+ else
76
+ current_class_id_methodname = foreign_key || "#{LocalModel::Functions.camel_to_snake(association)}_id"
77
+ belongs_to_id_sym = current_class_id_methodname.to_sym
78
+ define_method association do
79
+ association_class = Object.const_get(association_classname)
80
+ association_class.where(id: self.send(through)&.send(belongs_to_id_sym)).first
81
+ end
72
82
  end
73
83
  end
74
84
 
@@ -1,3 +1,3 @@
1
1
  module LocalModel
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: local_model
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
  - Micah Shute