Самореферентные модели данных в ruby ​​/ sinatra - PullRequest
0 голосов
/ 08 октября 2018

Я работаю над моделью данных, в которой есть Элементы, которые отслеживают компоненты диаграммы, и должны иметь возможность иметь дочерние и родительские элементы для всех.Тем не менее, у меня есть приведенные ниже модели, когда я пытаюсь сохранить ошибки.

class Element
  include DataMapper::Resource

 property :element_id, Serial, :key => true

 has n, :attributions, :child_key => [:child_id]
 has n, :parents, self, :through => :attributions, :via => :parent

end

class Attribution
  include DataMapper::Resource

  property :attribution_id, Serial, :key => true

  belongs_to :child, 'Element'
  belongs_to :parent, 'Element'

end

post '/test/:id/attribution/:element_id/addattribution' do
  @toc = Theoryofchange.get(params[:id])
  @parent_element = Element.get(params[:element_id])

  @child_element = Element.get(params[:child])

  attribution = Attribution.new
  attribution.child = @child_element
  attribution.parent = @parent_element

  attribution.save

end

Когда я сохраняю форму, появляется ошибка ниже.

2018-10-08 11: 00: 52 - DataMapper :: SaveFailureError - Атрибуция # save вернула false, атрибуция не сохранена:

Я следовал документации по самореференциальным отношениям, но явно что-то упустил.

...