проект не сложный, но найти способ обойти mongoid отношения было.Было бы неплохо найти более подробное объяснение.
Я не мог заставить свой код работать, однако я настроил их, поэтому мне удалось найти Mongoid_Alize: https://github.com/dzello/mongoid_alize
Еще когда я это делаюс помощью alize или alize_to / _from консоль возвращает мне ошибку в Mongoid :: Relations в Ruby2.3.3 / lib / ruby / gems / 2.3.0 / bundler / gems / mongoid_alize-b9175f4e3165 / lib / mongoid / alize / macros.rb: 79: в `_alize_relation_types '"
Я также включил готовую загрузку с помощью identity_map_enabled: true в mongoid.yml
Так вот код:
Currency.rb
class Currency
include Mongoid::Document
include Mongoid::Alize
field :name, type: String
field :state, type: String
field :code, type: Integer
field :unit, type: Integer
has_many :currency_value
has_many :value, :class_name => 'Value', :inverse_of => :currency
alize_to :value
end
Value.rb
class Value
include Mongoid::Document
include Mongoid::Alize
field :date, type: DateTime
field :buying, type: String
field :middle, type: String
field :selling, type: String
belongs_to :value_currency, :class => 'Currency', :inverse_of => :currency_value
belongs_to :currency, :class_name => 'Currency', :inverse_of => :value
alize_from :currency
end
ApiService.rb
class ApiService
# Has some api data coming from external function getApiData
def update()
@arrayOfHashes= getApiData() #array of hashes
@arrayOfHashes.each do |hash|
@currency = Currency.new({
name: hash["Name"],
state: hash["State"],
code: hash["Currency code"],
unit: hash["Unit"]
})
@currency.create_value(
date => hash["Date of value"],
buying => hash["Value when buying"],
middle => hash["Middle value"],
selling => hash["Value when selling"])
@currency.save
end
return @currency
end
end
Ожидаемый результат: сохранить все 13 итераций в MongoDB с их отношениями.
Я бы очень хотел услышать какое-нибудь объяснение здесь, потому что я не вдохновлен и застрял на месте. У меня есть некоторый опыт в программировании, и у меня есть ощущение, что это не должно быть так сложно.
Я могу сохранитьлибо модель валюты или значение, но не оба с их отношениями.Другая идея состоит в том, чтобы сделать это вручную, добавив пользовательский Foreign_id и создав метод в модели, который будет заполнять хеш.Но это может привести к проблемам с производительностью в будущем.
Любая помощь приветствуется, спасибо:)