rails_dynamic_associations 0.1.1 → 0.2.0.real

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: 4dccbe5a752726f57eb97a9f03323efb4907fe0e
4
- data.tar.gz: bba3e032f0bdc486b0bed4290b16a79b2ca14a5b
3
+ metadata.gz: 43cb344fd8b7ef4cd4f603260a48ad84c2fd3010
4
+ data.tar.gz: 121001d4ff410084fe0e1306735a8f78bf40e931
5
5
  SHA512:
6
- metadata.gz: 68b1fb01b76e4b128978fcd829089c6a683332fc8b8aa6b1617db4e9bc32732d6636ac8d3e29f4460919f44f91bcb89086df736e179fe9428f00ff42be5ff3e5
7
- data.tar.gz: 0c4802a3cf276dac52c6d91d394741830bf8925b800207d94feb1905e2ba40f2a41a12221a4427d5c86b20ef5c871a141f3ad9bb853844f729d954c8caa63812
6
+ metadata.gz: ce004cfa30905fbfd731e1be5e084ccb10bbadf1018966d4a45f3cda25fd93258f1b330c70ffad9871ae3cb768b6a88358c8b0caa696fbd835adc786782c4270
7
+ data.tar.gz: 46953fe6aafe0cc8b6e7b3d15890d54f786f310f27ad4bf9b8d9aefac2947c0c6475406724d68a30ea57baa00ae3cae99b2ad7c6bb62e3616f6fcc1164b93e52
@@ -22,8 +22,6 @@ class Relation < ActiveRecord::Base
22
22
 
23
23
  scope method, -> (object) {
24
24
  case object
25
- when nil then
26
- all
27
25
  when Symbol then
28
26
  send "#{method}_#{object}"
29
27
  when Class then
@@ -39,20 +37,6 @@ class Relation < ActiveRecord::Base
39
37
  of_abstract.to_abstract
40
38
  }
41
39
 
42
- scope :applied, -> {
43
- where.not source_id: nil,
44
- target_id: nil
45
- }
46
-
47
- scope :named, -> (*names) {
48
- if names.present? then
49
- where roles: { name: names.flatten.map(&:to_s) }
50
- else
51
- where.not roles: { name: nil }
52
- end.
53
- includes :role
54
- }
55
-
56
40
  def self.seed source, target, roles = nil
57
41
  (roles.present? ? by_roles(roles) : [ self ]).map do |scope|
58
42
  scope.create source_type: source,
@@ -66,6 +50,12 @@ class Relation < ActiveRecord::Base
66
50
  end
67
51
 
68
52
 
53
+ def name= role_name
54
+ self.role = role_name &&
55
+ Role.find_or_initialize_by(name: role_name)
56
+ end
57
+
58
+
69
59
  # Using polymorphic associations in combination with single table inheritance (STI) is
70
60
  # a little tricky. In order for the associations to work as expected, ensure that you
71
61
  # store the base model for the STI models in the type column of the polymorphic
@@ -1,9 +1,7 @@
1
1
  ActiveSupport.on_load :model_class do
2
2
  for type in RailsDynamicAssociations.directions.keys do
3
3
  for relation in send("#{type}_relations").abstract.select(&:"#{type}_type") do
4
- setup_relation type, relation.send("#{type}_type").constantize, relation.role do |association|
5
- attr_accessible "#{association.to_s.singularize}_ids"
6
- end
4
+ setup_relation type, relation.send("#{type}_type").constantize, relation.role
7
5
  end
8
6
  end if self != Relation and Relation.table_exists? # needed for DB migrations & schema initializing
9
7
  end
@@ -21,8 +21,8 @@ module RailsDynamicAssociations::ActiveRecord
21
21
  def define_relations_association type, target = self, role = nil
22
22
  :"#{role ? association_name(type, target, role).to_s.singularize : type}_relations".tap do |association|
23
23
  unless association.in? reflections then
24
- has_many association, conditions: role && { role_id: role.id },
25
- as: (RailsDynamicAssociations.directions.keys - [ type ]).first, class_name: 'Relation'
24
+ has_many association, role && -> { where role_id: role.id },
25
+ as: (RailsDynamicAssociations.directions.keys - [type]).first, class_name: 'Relation'
26
26
  end
27
27
  end
28
28
  end
@@ -4,11 +4,6 @@ module RailsDynamicAssociations::ActiveRecord
4
4
  module Relations
5
5
  extend ActiveSupport::Concern
6
6
 
7
- included do
8
- extend ClassAndInstanceMethods
9
- include ClassAndInstanceMethods
10
- end
11
-
12
7
  module ClassMethods
13
8
  RailsDynamicAssociations.opposite_directions.each &-> (association, method) do
14
9
  define_method "#{association}_relations" do
@@ -16,47 +11,5 @@ module RailsDynamicAssociations::ActiveRecord
16
11
  end
17
12
  end
18
13
  end
19
-
20
- module ClassAndInstanceMethods
21
- # TODO: use keyword arguments
22
- def find_relations args = {}
23
- directions = RailsDynamicAssociations.directions
24
-
25
- for association, method in directions do
26
- args[association] = args.delete method
27
- end
28
-
29
- as = [ args[:as] ].flatten
30
-
31
- if directions.keys.inject(nil) { |r, k| !r ^ !args[k] } then # direction specified
32
- for association, method in directions do
33
- next unless args[association]
34
-
35
- return (as.present? ?
36
- source_relations.named(as) :
37
- source_relations
38
- ).send method, args[association]
39
- end
40
- else # both directions
41
- directions.map do |association, method|
42
- as.present? ?
43
- send("#{association}_relations").named(as) :
44
- send("#{association}_relations")
45
- end.sum
46
- end
47
- end
48
-
49
- def relative? args = {}
50
- find_relations(args).
51
- present?
52
- end
53
-
54
- def relatives args = {}
55
- find_relations(args).
56
- map { |r|
57
- ([ r.source, r.target ] - [ self ]).first
58
- }.uniq
59
- end
60
- end
61
14
  end
62
15
  end
@@ -1,9 +1,7 @@
1
1
  require 'rails_dynamic_associations/active_record/associations'
2
2
  require 'rails_dynamic_associations/active_record/relations'
3
- require 'rails_dynamic_associations/active_record/roles'
4
3
 
5
4
  ActiveSupport.on_load :active_record do
6
5
  include RailsDynamicAssociations::ActiveRecord::Associations
7
6
  include RailsDynamicAssociations::ActiveRecord::Relations
8
- include RailsDynamicAssociations::ActiveRecord::Roles
9
7
  end
@@ -1,3 +1,3 @@
1
1
  module RailsDynamicAssociations
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.0.real'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_dynamic_associations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0.real
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Senko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-27 00:00:00.000000000 Z
11
+ date: 2015-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.2'
19
+ version: '4.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.2'
26
+ version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rails_model_load_hook
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -73,7 +73,6 @@ files:
73
73
  - lib/rails_dynamic_associations/active_record.rb
74
74
  - lib/rails_dynamic_associations/active_record/associations.rb
75
75
  - lib/rails_dynamic_associations/active_record/relations.rb
76
- - lib/rails_dynamic_associations/active_record/roles.rb
77
76
  - lib/rails_dynamic_associations/engine.rb
78
77
  - lib/rails_dynamic_associations/version.rb
79
78
  - lib/tasks/rails_dynamic_associations_tasks.rake
@@ -92,12 +91,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
92
91
  version: '0'
93
92
  required_rubygems_version: !ruby/object:Gem::Requirement
94
93
  requirements:
95
- - - ">="
94
+ - - ">"
96
95
  - !ruby/object:Gem::Version
97
- version: '0'
96
+ version: 1.3.1
98
97
  requirements: []
99
98
  rubyforge_project:
100
- rubygems_version: 2.2.2
99
+ rubygems_version: 2.4.5
101
100
  signing_key:
102
101
  specification_version: 4
103
102
  summary: DB-driven model associations for Rails.
@@ -1,24 +0,0 @@
1
- require 'active_support/concern'
2
-
3
- module RailsDynamicAssociations::ActiveRecord
4
- module Roles
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- extend ClassAndInstanceMethods
9
- include ClassAndInstanceMethods
10
- end
11
-
12
- module ClassAndInstanceMethods
13
- def roles to: nil, &block
14
- if block_given? then
15
- source_relations.instance_eval &block
16
- else
17
- source_relations
18
- end.
19
- to(to).
20
- map(&:name).uniq
21
- end
22
- end
23
- end
24
- end