Простой пример ассоциации для datamapper?

Мой код ниже

class City
  include DataMapper::Resource

  has n, :forums

  property :id,           Serial
  property :name,         String
  property :parent_state, String
  property :url,          String,  :length => 255
end

class Category
  include DataMapper::Resource

  has n, :forums

  property :id,           Serial
  property :name,         String
  property :url,          String,  :length => 255 
end

class Forum
  include DataMapper::Resource

  belongs_to :city
  belongs_to :category
  has n,     :posts

  property :id,           Serial
  property :rss,          String,  :length => 255
end

class Post
  include DataMapper::Resource

  belongs_to :forum

  property :id,           Serial
  property :title,        String,  :length => 255
  property :date,         Date
  property :time,         Time
  property :body,         Text
  property :url,          String,  :length => 255
  property :email,        String,  :length => 255

end

Я могу легко создать новый город... (это внутри цикла, который я не думаю, что вы действительно хотите видеть):

City.create(:parent_state => state, :name => citylink.content, :url => citylink.get_attribute('href'))

но хоть убей, я не могу понять, как создать новый форум (все, что есть у форума, - это свойство RSS). Я пытался написать его 100 различными способами, и он либо выдает ошибку, либо просто не записывает в базу данных, я предполагаю, потому что не задана ассоциация, поэтому он отказывается ее записывать.

Я довольно много прочитал туториалов и рецензий по DM и до сих пор не знаю, что буду делать.

Любая помощь очень ценится!

Это был мой последний дурацкий пробный тест... наверное, далеко...

city = City.get(:name => cityname)
Forum.create(:city => city, :rss => "this works now")

person Tallboy    schedule 10.12.2011    source источник


Ответы (1)


Это должно быть просто:

forum = city.forums.create(:rss => "whatever")

Если это не сработает, попробуйте проверить ошибки на наличие признаков чего-то очевидного, что вы упустили из виду:

forum.errors.full_messages

(Предполагая, что у вас есть dm-проверки)

РЕДАКТИРОВАТЬ | Кстати, это недопустимо:

city = City.get(:name => cityname)

Вы, вероятно, хотите:

city = City.first(:name => cityname)

or

cities = City.all(:name => cityname)

Когда вы используете .get, вы можете передать только первичный ключ, например:

city = City.get(1)
person d11wtq    schedule 10.12.2011