mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-19 05:09:38 +02:00
* Update Security model to include country_code in the data definition. * Modify Provider::SecurityConcept to define country_code for security. * Enhance Provider::Synth to extract country_code from security data. * Update Security::Provided to include country_code when creating security instances. * Adjust Security::SynthComboboxOption to add country_code as an attribute. * Revise combobox_security partial to conditionally display country flag and code.
37 lines
952 B
Ruby
37 lines
952 B
Ruby
class Security < ApplicationRecord
|
|
include Provided
|
|
|
|
before_validation :upcase_symbols
|
|
|
|
has_many :trades, dependent: :nullify, class_name: "Trade"
|
|
has_many :prices, dependent: :destroy
|
|
|
|
validates :ticker, presence: true
|
|
validates :ticker, uniqueness: { scope: :exchange_operating_mic, case_sensitive: false }
|
|
|
|
def current_price
|
|
@current_price ||= find_or_fetch_price
|
|
return nil if @current_price.nil?
|
|
Money.new(@current_price.price, @current_price.currency)
|
|
end
|
|
|
|
def to_combobox_option
|
|
SynthComboboxOption.new(
|
|
symbol: ticker,
|
|
name: name,
|
|
logo_url: logo_url,
|
|
exchange_operating_mic: exchange_operating_mic,
|
|
country_code: country_code
|
|
)
|
|
end
|
|
|
|
def has_prices?
|
|
exchange_operating_mic.present?
|
|
end
|
|
|
|
private
|
|
def upcase_symbols
|
|
self.ticker = ticker.upcase
|
|
self.exchange_operating_mic = exchange_operating_mic.upcase if exchange_operating_mic.present?
|
|
end
|
|
end
|