出于某种原因,我的模型不包含我使用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&amp; DataMapper.auto_upgrade!)。它有一个用户表和一个在posts.id上有外键的注释表。
对此有何建议?
答案 0 :(得分:0)
您使用的是哪个版本的数据管理器?
您可以创建注释,保存注释并查看它在post_id中存储的值吗?
尝试显式放置父键子键关系,如此
belongs_to :post, :parent_key => [:id], :child_key => [:post_id]
property :post_id, Integer
答案 1 :(得分:0)
好的,事实证明我在评论声明中添加了一个时间字段,如下所示:
class Comment
include DataMapper::Resource
belongs_to :post
property :id, Serial
property :time, Time
property :comment, Text
end
我也使用没有Time类型的MySQL并将其保存为DateTime。当尝试使用Post.comments检索注释时,DataMapper尝试将其解析为Time and die。
希望这可以为某些人带来一些麻烦。