X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/3eccf65d8cf2ceb13050f5c8d1396546631994be..663459d1c1e5e097c9b6d3f6742682eaff3f86e7:/app/models/note.rb diff --git a/app/models/note.rb b/app/models/note.rb index 17b57c0fa..b7215d6f7 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -16,9 +16,10 @@ # # Indexes # -# notes_created_at_idx (created_at) -# notes_tile_status_idx (tile,status) -# notes_updated_at_idx (updated_at) +# index_notes_on_description (to_tsvector('english'::regconfig, description)) USING gin +# notes_created_at_idx (created_at) +# notes_tile_status_idx (tile,status) +# notes_updated_at_idx (updated_at) # # Foreign Keys # @@ -28,6 +29,8 @@ class Note < ApplicationRecord include GeoRecord + belongs_to :author, :class_name => "User", :foreign_key => "user_id", :optional => true + has_many :comments, -> { left_joins(:author).where(:visible => true, :users => { :status => [nil, "active", "confirmed"] }).order(:created_at) }, :class_name => "NoteComment", :foreign_key => :note_id has_many :all_comments, -> { left_joins(:author).order(:created_at) }, :class_name => "NoteComment", :foreign_key => :note_id, :inverse_of => :note has_many :subscriptions, :class_name => "NoteSubscription" @@ -91,22 +94,20 @@ class Note < ApplicationRecord # Return the note's description, derived from the first comment def description - comments.first.body + if user_ip.nil? && user_id.nil? + all_comments.first.body + else + RichText.new("text", super) + end end # Return the note's author object, derived from the first comment def author - comments.first.author - end - - # Return the note's author ID, derived from the first comment - def author_id - comments.first.author_id - end - - # Return the note's author IP address, derived from the first comment - def author_ip - comments.first.author_ip + if user_ip.nil? && user_id.nil? + all_comments.first.author + else + super + end end private