我有两个名为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 未定义的方法`include?'为零:NilClass
我已经用Google搜索了大约两个小时,并阅读了DataMapper文档。 谁知道我做错了什么?
答案 0 :(得分:1)
在Usergig中尝试以下操作:
belongs_to :user, :key => true
belongs_to :gig, :key => true
答案 1 :(得分:1)
您忘记调用DataMapper.finalize ...这是您在加载所有模型后需要调用的内容。 Rails为你做这件事,在Sinatra你必须手动调用它。