Forum: Ruby Strange Datamapper behavior

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Fb506278b199c4ccba075a76a3149f24?d=identicon&s=25 rwz (Guest)
on 2009-05-24 19:11
(Received via mailing list)
I've been trying to make a simple many-to-many associations.

To get along with datamapper i copied the example from dm's homepage.
Here we have few simple models for a blog.

<code>require 'rubygems'
require 'dm-core'
require 'dm-validations'
require 'dm-timestamps'

DataMapper::Logger.new(STDERR, :debug)
DataMapper.setup(:default, 'mysql://root@localhost/somedatabase')

class Post
  include DataMapper::Resource

  # ...or the Serial custom-type which is functionally identical to
the above:
  property :id,         Serial, :key => true
  # ...or pass a :key option for a user-set key like the name of a
user:
  property :name,       String

  property :title,      String
  property :body,       Text
  property :created_at, DateTime
end

class Comment
  include DataMapper::Resource
  property :id,         Serial

  property :posted_by,  String
  property :email,      String
  property :url,        String
  property :body,       Text
end

class Category
  include DataMapper::Resource
  property :id,         Serial, :key => true
  property :name,       String
end


class Post
  has n, :comments
end

class Comment
  belongs_to :post
end


class Categorization
  include DataMapper::Resource
# property :id,         Serial

# property :created_at, DateTime

  belongs_to :category
  belongs_to :post
end

# Now we re-open our Post and Categories classes to define
associations
class Post
  has n, :categorizations
  has n, :categories, :through => :categorizations, :mutable  => true
end

class Category
  has n, :categorizations
  has n, :posts, :through => :categorizations, :mutable  => true
end

DataMapper.auto_migrate!
</code>

Then i try to do things with this models somehow:
<code>
post = Post.create(:title => 'first post', :body => 'first post body')
post.save
post.comments.build(:body => 'comment')
post.save
post.categories.build(:name => 'tag')
post.save
</code>

and get ArgumentError exception: The property 'post_id' is not a
public property.

Exception goes from the line containing "post.categories.build(:name
=> 'tag')".

I tried to dig in the code of datamapper to solve this, but it looks
too complicated for me. :(

Did anyone had this problem?
This topic is locked and can not be replied to.