diff --git a/lib/hq/graphql.rb b/lib/hq/graphql.rb index 0f2a506..0e90e0d 100644 --- a/lib/hq/graphql.rb +++ b/lib/hq/graphql.rb @@ -41,6 +41,11 @@ def self.excluded_inputs end def self.lookup_resource(klass) + if klass.to_s == "Organization" + klass = HasHelpers::Organization + elsif klass.to_s == "User" + klass = HasHelpers::User + end [klass, klass.base_class, klass.superclass].lazy.map do |k| config.resource_lookup.call(k) || resources.detect { |r| r.model_klass == k } end.reject(&:nil?).first diff --git a/spec/internal/app/models/advisor.rb b/spec/internal/app/models/advisor.rb index 381bedb..b5b22a5 100644 --- a/spec/internal/app/models/advisor.rb +++ b/spec/internal/app/models/advisor.rb @@ -1,5 +1,5 @@ class Advisor < ActiveRecord::Base - belongs_to :organization + belongs_to :organization, class_name: "::HasHelpers::Organization" def hydrate end diff --git a/spec/internal/app/models/manager.rb b/spec/internal/app/models/manager.rb index 2ee8e44..d94d744 100644 --- a/spec/internal/app/models/manager.rb +++ b/spec/internal/app/models/manager.rb @@ -1,8 +1,9 @@ class Manager < ::ActiveRecord::Base - belongs_to :organization - - has_many :active_users, -> { where(inactive: [nil, false]) }, class_name: "User" - has_many :users, inverse_of: :organization + belongs_to :organization, class_name: "::HasHelpers::Organization" + has_many :user_organizations, class_name: "::HasHelpers::UserOrganization" + has_many :active_users, -> { where(inactive: [nil, false]) }, class_name: "::HasHelpers::User" + # has_many :users, inverse_of: :organization + has_many :users, class_name: "::HasHelpers::User", through: :user_organizations has_many :advisors, through: :users has_many :not_joe, -> { where.not(name: "Joe" ) }, through: :users, source: :advisor end diff --git a/spec/internal/app/models/user.rb b/spec/internal/app/models/user.rb index c96e836..9367343 100644 --- a/spec/internal/app/models/user.rb +++ b/spec/internal/app/models/user.rb @@ -2,6 +2,8 @@ class User < ::ActiveRecord::Base belongs_to :advisor, optional: true belongs_to :manager, optional: true belongs_to :organization + # has_many :user_organizations, dependent: :destroy, class_name: "::HasHelpers::UserOrganization", inverse_of: :user + # has_many :organizations, class_name: "::HasHelpers::Organization", through: :user_organizations, inverse_of: :users def hydrate end diff --git a/spec/internal/app/models/user_organization.rb b/spec/internal/app/models/user_organization.rb new file mode 100644 index 0000000..2bd6961 --- /dev/null +++ b/spec/internal/app/models/user_organization.rb @@ -0,0 +1,2 @@ +class UserOrganization < ::ActiveRecord::Base +end diff --git a/spec/lib/graphql/object_association_spec.rb b/spec/lib/graphql/object_association_spec.rb index b34cb75..25df4e9 100644 --- a/spec/lib/graphql/object_association_spec.rb +++ b/spec/lib/graphql/object_association_spec.rb @@ -14,7 +14,7 @@ scope do |name: nil| if name - User.where(name: name) + ::HasHelpers::User.where(name: name) end end end diff --git a/spec/lib/graphql/paginated_association_loader_spec.rb b/spec/lib/graphql/paginated_association_loader_spec.rb index 88434a1..15b57ac 100644 --- a/spec/lib/graphql/paginated_association_loader_spec.rb +++ b/spec/lib/graphql/paginated_association_loader_spec.rb @@ -90,7 +90,7 @@ def load(association, **options) user3.update(advisor: advisor3) # Create dummy data to verify data is properly filtered - other_user = ::User.find_by(manager: manager2) + other_user = ::HasHelpers::User.find_by(manager: manager2) 2.times do advisor = ::FactoryBot.create(:advisor, organization: organization) other_user.update(advisor: advisor) diff --git a/spec/lib/graphql/types_spec.rb b/spec/lib/graphql/types_spec.rb index e8b7585..236531a 100644 --- a/spec/lib/graphql/types_spec.rb +++ b/spec/lib/graphql/types_spec.rb @@ -36,7 +36,7 @@ end it "raises an exception for unknown types" do - expect { described_class[Organization] }.to raise_error(described_class::Error) + expect { described_class[::HasHelpers::Organization] }.to raise_error(described_class::Error) end it "works with sti" do