Mongoidalize бросает NameError, неинициализированная константа Mongoid :: Relations - PullRequest
0 голосов
/ 18 сентября 2018

проект не сложный, но найти способ обойти 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 и создав метод в модели, который будет заполнять хеш.Но это может привести к проблемам с производительностью в будущем.

Любая помощь приветствуется, спасибо:)

...