Mongoidalize抛出NameError,未初始化的常量Mongoid :: Relations

时间:2018-09-18 14:20:12

标签: ruby-on-rails mongodb mongoid relationship

项目并不复杂,但是找到解决蒙古式关系的方法却很困难。很高兴找到一些深入的解释。

我无法使我的代码正常工作,但是我对其进行了设置,因此设法找到了Mongoid_Alize:https://github.com/dzello/mongoid_alize

但是,当我使用alize或alize_to / _from进行操作时,控制台向我返回了关于Mongoid :: Ruby2.3.​​3 / lib / ruby​​ / gems / 2.3.0 / bundler / gems / mongoid_alize-b9175f4e3165 / lib中的关系的错误/mongoid/alize/macros.rb:79:in`_alize_relation_types'“

我还包括了急切加载的identity_map_enabled:在mongoid.yml中为true

所以这是代码:

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并在模型中创建一个将填充哈希的方法来手动完成此操作。但这可能会导致将来的性能问题。

感谢您的帮助,谢谢:)

0 个答案:

没有答案