0

我正在使用Hanami 1.1.0.beta1(因为我需要关联)。

一个event可以有很多actions

class EventRepository < Hanami::Repository
  associations do
    has_many :actions
    ...
  end

class ActionRepository < Hanami::Repository
  associations do
    ...
    belongs_to :event
  end

当我调用此EventRepository方法时:

  def add_action(event, data)
    assoc(:actions, event).add(data)
  end

我收到此错误:

  KeyError:
    key not found: :id
  # /home/eric/.gem/ruby/2.3.4/gems/hanami-model-1.1.0.beta1/lib/hanami/model/associations/has_many.rb:195:in `fetch'
  # /home/eric/.gem/ruby/2.3.4/gems/hanami-model-1.1.0.beta1/lib/hanami/model/associations/has_many.rb:195:in `_build_scope'
  # /home/eric/.gem/ruby/2.3.4/gems/hanami-model-1.1.0.beta1/lib/hanami/model/associations/has_many.rb:47:in `initialize'
  # /home/eric/.gem/ruby/2.3.4/gems/hanami-model-1.1.0.beta1/lib/hanami/model/association.rb:20:in `new'
  # /home/eric/.gem/ruby/2.3.4/gems/hanami-model-1.1.0.beta1/lib/hanami/model/association.rb:20:in `build'
  # /home/eric/.gem/ruby/2.3.4/gems/hanami-model-1.1.0.beta1/lib/hanami/repository.rb:472:in `assoc'
  ...

我查看了 has_many.rb。在initialize我看到这subject是一个Event对象,它有一个idHasMany::initialize - subject: #<Event:0x00558f3c198ce8 @id=705, @attributes={:title=>"test_title"}>

但 in_build_scope subject已更改为只是attributes哈希,因此出现key not found: :id错误。

HasMany::_build_scope - 主题:{:title=>"test_title"}

这很奇怪,因为我看不到在和subject之间有任何变化的地方......initialize_build_scope

那么这是一个错误是1.1.0.beta1,还是我做错了什么?

4

0 回答 0