lib/pupa/models/concerns/sourceable.rb
module Pupa
module Concerns
# Adds the Popolo `sources` property to a model.
module Sourceable
extend ActiveSupport::Concern
included do
attr_reader :sources
dump :sources
end
def initialize(*args)
@sources = []
super
end
# Sets the sources.
#
# @param [Array] sources a list of sources
def sources=(sources)
@sources = symbolize_keys(sources)
end
# Adds a source to the object.
#
# @param [String] url a URL
# @param [String] note a note
def add_source(url, note: nil)
data = {url: url}
if note
data[:note] = note
end
if url.present?
@sources << data
end
end
end
end
end