subj_sub_models 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.idea/modules.xml +1 -1
- data/.idea/workspace.xml +5 -5
- data/Gemfile +1 -1
- data/README.md +3 -3
- data/bin/console +1 -1
- data/lib/subj_models/access_group.rb +22 -0
- data/lib/subj_models/action_banner.rb +37 -0
- data/lib/subj_models/attribute_value.rb +32 -0
- data/lib/subj_models/brand.rb +74 -0
- data/lib/subj_models/brand_line.rb +51 -0
- data/lib/subj_models/category.rb +36 -0
- data/lib/subj_models/city.rb +31 -0
- data/lib/subj_models/concerns/comprising_external_id.rb +37 -0
- data/lib/subj_models/concerns/shared_scopes.rb +15 -0
- data/lib/subj_models/content_block.rb +28 -0
- data/lib/subj_models/document_file.rb +38 -0
- data/lib/subj_models/event.rb +79 -0
- data/lib/subj_models/event_booking.rb +39 -0
- data/lib/subj_models/event_schedule.rb +37 -0
- data/lib/subj_models/event_type.rb +27 -0
- data/lib/subj_models/faq.rb +46 -0
- data/lib/subj_models/global_notification.rb +16 -0
- data/lib/subj_models/manager.rb +31 -0
- data/lib/subj_models/measure_unit.rb +28 -0
- data/lib/subj_models/nomenclature.rb +166 -0
- data/lib/subj_models/nomenclature_access_group.rb +19 -0
- data/lib/subj_models/nomenclature_attribute.rb +27 -0
- data/lib/subj_models/nomenclature_file.rb +44 -0
- data/lib/subj_models/nomenclature_photo.rb +36 -0
- data/lib/subj_models/nomenclature_price.rb +39 -0
- data/lib/subj_models/nomenclature_review.rb +38 -0
- data/lib/subj_models/nomenclature_variety.rb +29 -0
- data/lib/subj_models/office.rb +40 -0
- data/lib/subj_models/office_contact.rb +41 -0
- data/lib/subj_models/order.rb +91 -0
- data/lib/subj_models/order_delivery_courier.rb +31 -0
- data/lib/subj_models/order_delivery_nova_poshta_warhouse.rb +20 -0
- data/lib/subj_models/order_delivery_pickup.rb +28 -0
- data/lib/subj_models/order_delivery_privatbank.rb +29 -0
- data/lib/subj_models/order_delivery_subj_courier.rb +25 -0
- data/lib/subj_models/order_item.rb +60 -0
- data/lib/subj_models/quality.rb +25 -0
- data/lib/subj_models/services/types_support.rb +122 -0
- data/lib/subj_models/services/values_checker.rb +11 -0
- data/lib/subj_models/specialist_activity.rb +33 -0
- data/lib/subj_models/specialist_activity_document_type.rb +29 -0
- data/lib/subj_models/template.rb +18 -0
- data/lib/subj_models/user.rb +131 -0
- data/lib/subj_models/user_card.rb +29 -0
- data/lib/subj_models/user_card_delivery.rb +29 -0
- data/lib/subj_models/user_delivery_address.rb +34 -0
- data/lib/subj_models/user_specialization.rb +38 -0
- data/lib/subj_models/user_specialization_approval.rb +33 -0
- data/lib/subj_models/user_work_place.rb +29 -0
- data/lib/subj_models/version.rb +3 -0
- data/lib/subj_models/video.rb +29 -0
- data/lib/subj_models.rb +49 -0
- data/subj_models.gemspec +33 -0
- data/subj_models.iml +9 -0
- metadata +56 -2
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'subj_models/concerns/comprising_external_id'
|
2
|
+
|
3
|
+
module SubjModels
|
4
|
+
|
5
|
+
module ContentBlockModule
|
6
|
+
|
7
|
+
def self.included(including_class)
|
8
|
+
|
9
|
+
including_class.class_eval do
|
10
|
+
|
11
|
+
include SubjModels::ComprisingExternalId
|
12
|
+
|
13
|
+
belongs_to :document_file
|
14
|
+
has_one :brand
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
def to_s
|
21
|
+
brands = Brand.where('content_block1_id=? OR (content_block2_id=? OR content_block3_id=?)', id, id, id)
|
22
|
+
addition_text = brands.any? ? "#{brands.first.try(:name)}" : 'Без бренда'
|
23
|
+
"#{title} - " + addition_text
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'subj_models/concerns/comprising_external_id'
|
2
|
+
|
3
|
+
module SubjModels
|
4
|
+
|
5
|
+
module DocumentFileModule
|
6
|
+
|
7
|
+
def self.included(including_class)
|
8
|
+
|
9
|
+
including_class.class_eval do
|
10
|
+
|
11
|
+
include SubjModels::ComprisingExternalId
|
12
|
+
|
13
|
+
has_one :nomenclature_photo
|
14
|
+
has_one :nomenclature_file
|
15
|
+
has_one :brand_line
|
16
|
+
has_one :user
|
17
|
+
has_one :manager
|
18
|
+
has_one :user_specialization_approval
|
19
|
+
|
20
|
+
has_many :videos
|
21
|
+
has_many :brands
|
22
|
+
|
23
|
+
mount_uploader :file_data, PhotoUploader
|
24
|
+
mount_uploader :alternative_file_data, PhotoUploader
|
25
|
+
|
26
|
+
validates :file_data, presence: true
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
def to_s
|
33
|
+
id.to_s
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'subj_models/concerns/comprising_external_id'
|
2
|
+
|
3
|
+
module SubjModels
|
4
|
+
|
5
|
+
module EventModule
|
6
|
+
|
7
|
+
def self.included(including_class)
|
8
|
+
|
9
|
+
including_class.class_eval do
|
10
|
+
|
11
|
+
include SubjModels::ComprisingExternalId
|
12
|
+
|
13
|
+
belongs_to :manager
|
14
|
+
belongs_to :event_type
|
15
|
+
belongs_to :nomenclature
|
16
|
+
belongs_to :document_file
|
17
|
+
belongs_to :brand
|
18
|
+
|
19
|
+
has_one :event_schedule
|
20
|
+
has_one :nomenclature_price
|
21
|
+
|
22
|
+
has_many :order_items
|
23
|
+
has_many :event_bookings
|
24
|
+
|
25
|
+
has_and_belongs_to_many :user_specializations
|
26
|
+
has_and_belongs_to_many :nomenclatures
|
27
|
+
|
28
|
+
validates :document_file, :title, presence: true
|
29
|
+
|
30
|
+
scope :from_today, -> {
|
31
|
+
Event.joins(:event_schedule).where('event_schedules.event_date >= ?', DateTime.now.beginning_of_day )
|
32
|
+
.includes(:event_schedule).order( 'event_schedules.event_date ASC' ).uniq
|
33
|
+
}
|
34
|
+
|
35
|
+
scope :where_nomenclature_ids, -> (ids) do
|
36
|
+
joins(:nomenclatures).where(nomenclatures: {id: ids})
|
37
|
+
end
|
38
|
+
|
39
|
+
scope :office_ids, -> (ids) do
|
40
|
+
joins(event_schedule: [:office]).where(event_schedule: { office: {id: ids}})
|
41
|
+
end
|
42
|
+
|
43
|
+
scope :type_ids, -> (ids) do
|
44
|
+
joins(:event_type).where(event_type: {id: ids})
|
45
|
+
end
|
46
|
+
|
47
|
+
scope :brand_ids, -> (ids) do
|
48
|
+
joins(:brand).where(brand: { id: ids})
|
49
|
+
end
|
50
|
+
|
51
|
+
scope :only_free, -> do
|
52
|
+
joins(:event_schedule).where(event_schedule: { is_free: true } )
|
53
|
+
end
|
54
|
+
|
55
|
+
scope :specialities_ids, -> (ids) do
|
56
|
+
joins(:user_specializations).where(user_specializations: { id: ids})
|
57
|
+
end
|
58
|
+
|
59
|
+
scope :date_range, -> (date) do
|
60
|
+
joins(:event_schedule)
|
61
|
+
.where(event_schedule: { event_date: DateTime.parse(date['from']).beginning_of_day..DateTime.parse(date['to']).end_of_day } )
|
62
|
+
end
|
63
|
+
|
64
|
+
scope :today_events, -> {
|
65
|
+
includes(:event_schedule).where(event_schedule: { event_date: DateTime.now.beginning_of_day..DateTime.now.end_of_day } )
|
66
|
+
}
|
67
|
+
scope :is_public, -> { where(is_public: true) }
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
def to_s
|
74
|
+
title.to_s
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'subj_models/concerns/comprising_external_id'
|
2
|
+
|
3
|
+
module SubjModels
|
4
|
+
|
5
|
+
module EventBookingModule
|
6
|
+
|
7
|
+
def self.included(including_class)
|
8
|
+
|
9
|
+
including_class.class_eval do
|
10
|
+
|
11
|
+
include SubjModels::ComprisingExternalId
|
12
|
+
|
13
|
+
belongs_to :order
|
14
|
+
belongs_to :user
|
15
|
+
belongs_to :event
|
16
|
+
|
17
|
+
validates :user, uniqueness: { scope: :event }
|
18
|
+
|
19
|
+
scope :user_id , -> (user_id) {where(user_id: user_id)}
|
20
|
+
scope :event_id , -> (event_id) {where(event_id: event_id)}
|
21
|
+
scope :only_new, -> (condition) do
|
22
|
+
if condition
|
23
|
+
where(external_id: nil)
|
24
|
+
else
|
25
|
+
all
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_s
|
34
|
+
id.to_s
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'subj_models/services/values_checker'
|
2
|
+
require 'subj_models/services/types_support'
|
3
|
+
require 'subj_models/concerns/comprising_external_id'
|
4
|
+
|
5
|
+
module SubjModels
|
6
|
+
|
7
|
+
module EventScheduleModule
|
8
|
+
|
9
|
+
include SubjModels::TypesSupport::EventTypes
|
10
|
+
include SubjModels::ValuesChecker
|
11
|
+
|
12
|
+
def self.included(including_class)
|
13
|
+
|
14
|
+
including_class.class_eval do
|
15
|
+
|
16
|
+
include SubjModels::ComprisingExternalId
|
17
|
+
|
18
|
+
enum event_type: EVENT_TYPES
|
19
|
+
|
20
|
+
belongs_to :event
|
21
|
+
belongs_to :office
|
22
|
+
|
23
|
+
validates :event_date, presence: true
|
24
|
+
|
25
|
+
scope :event_id, -> (event_id) { parent_id_scope(event_id: event_id) }
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_s
|
32
|
+
id.to_s # TODO
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'subj_models/concerns/comprising_external_id'
|
2
|
+
|
3
|
+
module SubjModels
|
4
|
+
|
5
|
+
module EventTypeModule
|
6
|
+
|
7
|
+
def self.included(including_class)
|
8
|
+
|
9
|
+
including_class.class_eval do
|
10
|
+
|
11
|
+
include SubjModels::ComprisingExternalId
|
12
|
+
|
13
|
+
has_many :events
|
14
|
+
|
15
|
+
validates :name, presence: true
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def to_s
|
22
|
+
name
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'subj_models/concerns/comprising_external_id'
|
2
|
+
|
3
|
+
module SubjModels
|
4
|
+
|
5
|
+
module FaqModule
|
6
|
+
|
7
|
+
include SubjModels::TypesSupport::FaqTypes
|
8
|
+
include SubjModels::ValuesChecker
|
9
|
+
|
10
|
+
def self.included(including_class)
|
11
|
+
|
12
|
+
including_class.class_eval do
|
13
|
+
|
14
|
+
include SubjModels::ComprisingExternalId
|
15
|
+
|
16
|
+
enum faq_type: FAQ_TYPES
|
17
|
+
|
18
|
+
after_save :notify_user
|
19
|
+
|
20
|
+
validates :question, presence: true, allow_blank: false,
|
21
|
+
uniqueness: { message: 'Простите, такой вопрос уже был задан' }
|
22
|
+
validates :faq_type, inclusion: { in: faq_types.keys },
|
23
|
+
on: :update
|
24
|
+
|
25
|
+
scope :with_answer, -> { where.not(answer: nil) }
|
26
|
+
scope :without_answer, -> { where(answer: nil) }
|
27
|
+
scope :on_site, -> { where(show_on_site: true) }
|
28
|
+
scope :type_is, -> (condition) { where(faq_type: condition) }
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_s
|
35
|
+
question
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def notify_user
|
41
|
+
FaqMailer.notify_user(self).deliver if send_to_user
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'subj_models/concerns/comprising_external_id'
|
2
|
+
require 'subj_models/concerns/shared_scopes'
|
3
|
+
|
4
|
+
module SubjModels
|
5
|
+
|
6
|
+
module ManagerModule
|
7
|
+
|
8
|
+
def self.included(including_class)
|
9
|
+
|
10
|
+
including_class.class_eval do
|
11
|
+
|
12
|
+
include SubjModels::SharedScopes
|
13
|
+
include SubjModels::ComprisingExternalId
|
14
|
+
|
15
|
+
belongs_to :document_file
|
16
|
+
has_many :events
|
17
|
+
|
18
|
+
validates :email, uniqueness: { case_sensitive: false }
|
19
|
+
validates :first_name, :last_name, :email, :phone, :document_file, presence: true
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def to_s
|
26
|
+
"#{first_name} #{last_name}"
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'subj_models/concerns/comprising_external_id'
|
2
|
+
|
3
|
+
module SubjModels
|
4
|
+
|
5
|
+
module MeasureUnitModule
|
6
|
+
|
7
|
+
def self.included(including_class)
|
8
|
+
|
9
|
+
including_class.class_eval do
|
10
|
+
|
11
|
+
include SubjModels::ComprisingExternalId
|
12
|
+
|
13
|
+
belongs_to :attribute_value
|
14
|
+
|
15
|
+
has_many :nomenclature_prices
|
16
|
+
|
17
|
+
validates :name, presence: true
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_s
|
24
|
+
name
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,166 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'subj_models/concerns/comprising_external_id'
|
3
|
+
|
4
|
+
module SubjModels
|
5
|
+
|
6
|
+
module NomenclatureModule
|
7
|
+
|
8
|
+
def self.included(including_class)
|
9
|
+
|
10
|
+
including_class.class_eval do
|
11
|
+
|
12
|
+
include SubjModels::ComprisingExternalId
|
13
|
+
|
14
|
+
belongs_to :brand_line
|
15
|
+
belongs_to :brand
|
16
|
+
belongs_to :user_specialization
|
17
|
+
belongs_to :category
|
18
|
+
|
19
|
+
has_many :nomenclature_varieties, dependent: :destroy
|
20
|
+
has_many :nomenclature_photos, dependent: :destroy
|
21
|
+
has_many :nomenclature_reviews, dependent: :destroy
|
22
|
+
has_many :nomenclature_files, dependent: :destroy
|
23
|
+
has_many :attribute_values, dependent: :destroy
|
24
|
+
has_many :nomenclature_prices, dependent: :destroy
|
25
|
+
|
26
|
+
belongs_to :analog_related_nomenclature, class_name: "Nomenclature"
|
27
|
+
has_many :analogs, foreign_key: "analog_related_nomenclature_id", class_name: "Nomenclature"
|
28
|
+
belongs_to :bought_together_related_nomenclature, class_name: "Nomenclature"
|
29
|
+
has_many :bought_together, foreign_key: "bought_together_related_nomenclature_id", class_name: "Nomenclature"
|
30
|
+
|
31
|
+
has_and_belongs_to_many :action_banners
|
32
|
+
has_and_belongs_to_many :access_groups, through: :nomenclature_access_groups
|
33
|
+
has_and_belongs_to_many :events
|
34
|
+
|
35
|
+
validates :name, presence: true
|
36
|
+
|
37
|
+
scope :with_category, -> { where.not(category_id: nil) }
|
38
|
+
scope :brand_line_ids, -> (brand_line_id) { where(brand_line_id: brand_line_id) }
|
39
|
+
scope :with_action, -> { joins(:action_banners).distinct }
|
40
|
+
scope :is_recommended, -> condition { where(is_recommended: condition) }
|
41
|
+
scope :in_index_list, -> condition { where(show_on_index: condition) }
|
42
|
+
scope :is_stock, -> (condition) do
|
43
|
+
nomenclature_prices_join.joins("LEFT OUTER JOIN qualities ON qualities.id = nomenclature_prices.quality_id").where("qualities.is_stock" => condition).uniq
|
44
|
+
end
|
45
|
+
|
46
|
+
scope :bought_together_external_id, -> (ids) do
|
47
|
+
joins(:bought_together_related_nomenclature).where(bought_together_related_nomenclature: {external_id: ids }).uniq
|
48
|
+
end
|
49
|
+
|
50
|
+
scope :is_available, -> (params) do
|
51
|
+
is_available = params.first
|
52
|
+
return all unless is_available == 'true'
|
53
|
+
user = User.find_by(id: params.second.to_i)
|
54
|
+
not_professional_ids = Nomenclature.is_professional(false).pluck(:id)
|
55
|
+
ids = user ? user.available_nomenclature_ids.concat(not_professional_ids) : []
|
56
|
+
where(id: ids)
|
57
|
+
end
|
58
|
+
|
59
|
+
scope :only_promotional, -> do
|
60
|
+
joins(:action_banners).uniq
|
61
|
+
end
|
62
|
+
|
63
|
+
scope :is_professional, -> (condition) {where(is_professional: condition) }
|
64
|
+
|
65
|
+
scope :price, -> (prices) do
|
66
|
+
prices = prices.map { |p| p.split(',') }
|
67
|
+
nomenclature_prices_join.
|
68
|
+
where(
|
69
|
+
prices.map do |range|
|
70
|
+
if range[0] && range[1]
|
71
|
+
'(nomenclature_prices.current_price >= ? AND nomenclature_prices.current_price < ?)'
|
72
|
+
elsif range[0]
|
73
|
+
'(nomenclature_prices.current_price >= ?)'
|
74
|
+
elsif range[1]
|
75
|
+
'(nomenclature_prices.current_price < ?)'
|
76
|
+
end
|
77
|
+
end.join(' OR '),
|
78
|
+
*prices.map(&:compact).flatten
|
79
|
+
)
|
80
|
+
end
|
81
|
+
|
82
|
+
scope :order_by_name, -> (ordering) do
|
83
|
+
ordering = ordering.second.try(:to_sym)
|
84
|
+
if [:asc, :desc].include? ordering
|
85
|
+
order(name: ordering)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
scope :order_by_popularity, -> (ordering) do
|
90
|
+
ordering = ordering.second.try(:to_sym)
|
91
|
+
if [:asc, :desc].include? ordering
|
92
|
+
order(popularity: ordering)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
scope :attribute_value_ids, -> (attribute_value_name_strings) do
|
97
|
+
query_result = nil
|
98
|
+
nomenclature_ids = ids
|
99
|
+
attribute_value_name_strings.each do |str|
|
100
|
+
attr_names = str.split('/')
|
101
|
+
query_result = Nomenclature.joins(:attribute_values).where("attribute_values.nomenclature_value" => attr_names).where(id: nomenclature_ids).uniq
|
102
|
+
nomenclature_ids = query_result.pluck(:id)
|
103
|
+
end
|
104
|
+
|
105
|
+
query_result
|
106
|
+
end
|
107
|
+
|
108
|
+
scope :nomenclature_prices_join, -> do
|
109
|
+
joins(:nomenclature_prices)
|
110
|
+
#joins('LEFT OUTER JOIN nomenclature_varieties ON nomenclature_varieties.id = (SELECT innerNomVar.id FROM nomenclature_varieties as innerNomVar WHERE innerNomVar.nomenclature_id = nomenclatures.id LIMIT 1)')
|
111
|
+
#.joins('LEFT OUTER JOIN nomenclature_prices on nomenclature_prices.id = (SELECT innerNomPrice.id FROM nomenclature_prices AS innerNomPrice WHERE innerNomPrice.nomenclature_variety_id = nomenclature_varieties.id LIMIT 1)')
|
112
|
+
end
|
113
|
+
|
114
|
+
scope :order_by_price, -> (ordering) do
|
115
|
+
ordering = ordering.second.try(:to_sym)
|
116
|
+
if [:asc, :desc].include? ordering
|
117
|
+
nomenclature_prices_join.
|
118
|
+
order("nomenclature_prices.current_price #{ordering}")
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
scope :category_id, -> (category_id) do
|
123
|
+
return all unless category_id.present?
|
124
|
+
where(category_id: category_id)
|
125
|
+
end
|
126
|
+
|
127
|
+
scope :nomenclature_ids, -> (ids) { where(id: ids) }
|
128
|
+
|
129
|
+
scope :brand_ids, -> (brand) do
|
130
|
+
return all unless brand.present?
|
131
|
+
where(brand: brand)
|
132
|
+
end
|
133
|
+
|
134
|
+
scope :with_brand, -> (brand) do
|
135
|
+
return none unless brand.present?
|
136
|
+
where(brand: brand)
|
137
|
+
end
|
138
|
+
|
139
|
+
scope :brand_line_ids, -> (ids) do
|
140
|
+
return all unless ids.present?
|
141
|
+
where(brand_line_id: ids)
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
147
|
+
|
148
|
+
def is_bought(user_id)
|
149
|
+
Order.joins(order_items: :nomenclature)
|
150
|
+
.where("nomenclatures.id IN (?)", self.id)
|
151
|
+
.where(user_id: user_id).any?
|
152
|
+
end
|
153
|
+
|
154
|
+
def to_s
|
155
|
+
name.to_s # TODO
|
156
|
+
end
|
157
|
+
|
158
|
+
def self.name_field_update(field)
|
159
|
+
if field.to_s == 'name' #TODO refactor this
|
160
|
+
field = 'name.raw'
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
end
|
165
|
+
|
166
|
+
end
|