【发布时间】:2012-01-20 15:19:58
【问题描述】:
我有 2 个名为 User 和 Gig 的类,还有一个连接表 Usergig。
class Usergig
include DataMapper::Resource
property :id, Serial
belongs_to :user
belongs_to :gig
end
class Gig
include DataMapper::Resource
property :id, Serial
property :gigname, String
property :gigtext, Text
has n, :usergigs
has n, :users, :through => :usergigs
end
class User
include DataMapper::Resource
property :id, Serial
property :username, String
property :realname, String
has n, :usergigs
has n, :gigs, :through => :usergigs
end
当我尝试运行时:
post '/gig/add' do
user = User.get(1)
gig = user.gigs.create(:gigname => params[:gig_gigname], :gigtext => params[:gig_gigtext])
end
我得到错误: /gig/add 处的 NoMethodError 未定义的方法“包括?”对于 nil:NilClass
我已经用谷歌搜索了大约两个小时,并阅读了 DataMapper 文档。 有谁知道我做错了什么?
【问题讨论】:
-
我编辑了您的帖子以使其可读。你应该粘贴你的代码(没有行号,所以我们也可以复制/粘贴它!),然后选择它并按 CMD+K (Mac) 或 ctrl+K (PC)。
-
你试过
:through => Usergig吗? -
啊,谢谢!这是我的第一篇文章,我还在学习 :-) 它现在工作正常,顺便说一句。似乎也忘了使用DataMapper.finalize。非常感谢!! :-)
标签: ruby many-to-many sinatra datamapper