One-To-Many-Through добавление экземпляров модели соединения - PullRequest
0 голосов
/ 10 сентября 2011

Мои модели:

class Test
  include DataMapper::Resource

  property :id, Serial
  property :name, String, :default => ''

  has n, :test_visits
  has n, :visits, :through => :test_visits
  # ...
end

class Visit
  include DataMapper::Resource
  property :id, Serial
  property :name, String

  has n, :test_visits
  has n, :tests, :through => :test_visits
  # ...
end

class TestVisit
  include DataMapper::Resource

  property :result, String

  belongs_to :test, :key => true
  belongs_to :visit, :key => true
end

Почему этот код вызывает ошибку SaveFailureError?:

@visit.test_visits.clear
@results.each do |test, result|
  @visit.test_visits.new(:test => test, :result => result)
end
@visit.save

где переменная @results - это Hash (ключи: Test, значения: String)

1 Ответ

1 голос
/ 11 сентября 2011

Возникает ошибка, поскольку дочерние объекты не сохраняются.Попробуйте это:

@results.each do |test, result|
  TestVisit.create(:visit => @visit, :test => test, :result => result)
end
...