1

出于某种原因,我的模型不包含我使用 has n 链接的关联模型。

我的定义如下:

class Post
    include DataMapper::Resource

    has n, :comments

    property :id, Serial
    property :name, String
end

class Comment
    include DataMapper::Resource

    belongs_to :post

    property :id, Serial
    property :comment, Text  
end

然后由于某种原因使用以下路由/代码会引发错误,因为注释似乎不是用户的属性。

class MyApp < Sinatra::Application
  get "/" do

    @post = Post.get(1)    
    @post.comments.inspect
  end
end

DataMapper 生成的表看起来不错(使用 DataMapper.finalize 和 DataMapper.auto_upgrade!)。它有一个用户表和一个在posts.id 上有一个外键的评论表。

对此有何建议?

4

2 回答 2

0

您使用的是什么版本的数据映射器?

您可以创建评论、保存它并查看它在 post_id 中存储了什么值?

尝试像这样显式放置父键子键关系

belongs_to :post, :parent_key => [:id], :child_key => [:post_id]
property   :post_id, Integer
于 2011-12-14T13:08:19.377 回答
0

好的,事实证明我在评论声明中添加了一个时间字段,如下所示:

class Comment
    include DataMapper::Resource

    belongs_to :post

    property :id, Serial
    property :time, Time
    property :comment, Text  
end

我也在使用没有时间类型并将其保存为日期时间的 MySQL。当尝试使用 Post.comments 检索评论时,DataMapper 尝试将其解析为时间并死亡。

希望这可以避免一些人头疼。

于 2011-12-15T08:53:28.353 回答