Хорошо, так что это движет я сумасшедший. Я прочитал статью и пример об ассоциациях и последние три дня пытался решить эту проблему, и я устал от этого, заставляя меня чувствовать себя глупо, так что ...
Как установить ассоциации с DataMapper?
(Я использую DM с Sinatra с SQLite3. Все прекрасно для отдельных таблиц с несколькими значениями и т. Д. Когда я начинаю пытаться связать их, я начинаю получать ошибки.)
Допустим, у меня есть Orchard full яблонь. На каждом дереве много яблок. У каждого яблока много семян. Следовательно, каждое дерево имеет много семян через свои яблоки
require 'sinatra'
require 'datamapper'
DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/orchard.db")
# Trees in the orchard.
class Tree
include DataMapper::Resource
property :id, Serial
has n, :apples
has n, :seeds, :through => :apples
end
# Apples on a Tree.
class Apple
include DataMapper::Resource
property :id, Serial
belongs_to :tree
belongs_to :seed
end
# Seeds in an Apple
class Seed
include DataMapper::Resource
property :id, Serial
has n, :apple
has n, :tree, :through => apple
end
DataMapper.finalize.auto_upgrade!
. Это верно? Я постоянно получаю различные ошибки, когда пытаюсь запустить это.В основном это связано с недопустимой ассоциацией или невозможностью создать столбец NULL со значением NULL и т. Д. Что я не понимаю в этой взаимосвязи?
Кроме того, если у меня есть рабочая модель, как мне получить из нее информацию?
Если есть 3 дерева:
Tree.all.count
=> 3
Если есть 2 яблока:
Apple.all
=>[#<Apple @id=1>, #<Apple @id=2>]
Хорошо, круто. Но сколько яблок у Дерева №2? Сколько семян у Дерева № 4? Сколько всего яблок? Сколько всего семян?
Любая помощь будет принята с благодарностью.