diff --git a/app/models/client.rb b/app/models/client.rb index 631cb6fd6..2fcbd926c 100644 --- a/app/models/client.rb +++ b/app/models/client.rb @@ -40,7 +40,7 @@ class Client < ActiveRecord::Base validate :freeze_symbol, :on => :update strip_attributes - belongs_to :provider, foreign_key: :allocator + belongs_to :provider, foreign_key: :allocator, touch: true has_many :dois, foreign_key: :datacentre has_many :client_prefixes, foreign_key: :datacentre, dependent: :destroy has_many :prefixes, through: :client_prefixes diff --git a/app/models/client_prefix.rb b/app/models/client_prefix.rb index a50bab96b..31ff1f6cf 100644 --- a/app/models/client_prefix.rb +++ b/app/models/client_prefix.rb @@ -6,7 +6,7 @@ class ClientPrefix < ActiveRecord::Base self.table_name = "datacentre_prefixes" - belongs_to :client, foreign_key: :datacentre + belongs_to :client, foreign_key: :datacentre, touch: true belongs_to :prefix, foreign_key: :prefixes belongs_to :provider_prefix, foreign_key: :allocator_prefixes diff --git a/app/models/concerns/indexable.rb b/app/models/concerns/indexable.rb index 5a650aa55..a7e7b0209 100644 --- a/app/models/concerns/indexable.rb +++ b/app/models/concerns/indexable.rb @@ -13,6 +13,11 @@ module Indexable end end + after_touch do + # use index_document instead of update_document to also update virtual attributes + IndexJob.perform_later(self) + end + before_destroy do begin __elasticsearch__.delete_document diff --git a/app/models/provider.rb b/app/models/provider.rb index 1921dc9a1..5b8a28904 100644 --- a/app/models/provider.rb +++ b/app/models/provider.rb @@ -78,6 +78,7 @@ class Provider < ActiveRecord::Base indexes :id, type: :keyword indexes :uid, type: :keyword indexes :symbol, type: :keyword + indexes :client_ids, type: :keyword indexes :prefix_ids, type: :keyword indexes :name, type: :text, fields: { keyword: { type: "keyword" }, raw: { type: "text", "analyzer": "string_lowercase", "fielddata": true }} indexes :contact_name, type: :text @@ -120,6 +121,7 @@ def as_indexed_json(options={}) "id" => uid, "uid" => uid, "name" => name, + "client_ids" => client_ids, "prefix_ids" => prefix_ids, "symbol" => symbol, "year" => year, @@ -172,7 +174,6 @@ def self.query_aggregations end def csv - provider = { name: name, provider_id: symbol, @@ -227,7 +228,6 @@ def billing_organization billing_information.fetch("organization",nil) if billing_information.present? end - def billing_address billing_information.fetch("address",nil) if billing_information.present? end diff --git a/app/models/provider_prefix.rb b/app/models/provider_prefix.rb index 5f9c641e0..7645c12c1 100644 --- a/app/models/provider_prefix.rb +++ b/app/models/provider_prefix.rb @@ -6,7 +6,7 @@ class ProviderPrefix < ActiveRecord::Base self.table_name = "allocator_prefixes" - belongs_to :provider, foreign_key: :allocator + belongs_to :provider, foreign_key: :allocator, touch: true belongs_to :prefix, foreign_key: :prefixes has_many :client_prefixes, foreign_key: :allocator_prefixes, dependent: :destroy has_many :clients, through: :client_prefixes diff --git a/app/serializers/provider_serializer.rb b/app/serializers/provider_serializer.rb index 6c06e55a9..015c9996c 100644 --- a/app/serializers/provider_serializer.rb +++ b/app/serializers/provider_serializer.rb @@ -7,6 +7,7 @@ class ProviderSerializer attributes :name, :symbol, :website, :contact_name, :contact_email, :phone, :description, :region, :country, :logo_url, :organization_type, :focus_area, :is_active, :has_password, :joined, :twitter_handle, :billing_information, :ror_id, :created, :updated + has_many :clients, record_type: :clients has_many :prefixes, record_type: :prefixes attribute :country do |object|