Ruby数据映射器不';t商店不属于
我有两种DataMapper型号:Ruby数据映射器不';t商店不属于,ruby,sinatra,store,one-to-many,datamapper,Ruby,Sinatra,Store,One To Many,Datamapper,我有两种DataMapper型号: class Address include DataMapper::Resource property :id, Serial property :url, String, :required => true has n, :logs end class Log include DataMapper::Resource property :id, Serial property :useragent, String
class Address
include DataMapper::Resource
property :id, Serial
property :url, String, :required => true
has n, :logs
end
class Log
include DataMapper::Resource
property :id, Serial
property :useragent, String
belongs_to :address
end
我使用Sinatra创建新地址,并在另一种方法中记录属于这些地址的日志
# page after posting a form
post '/' do
@messages = []
if (params[:url] =~ URI::regexp).nil?
@messages.push('URL is not valid!')
else
address = Address.create(:url => params[:url])
base36 = address.id.to_s(36)
@messages.push(request.url + base36)
end
erb :index
end
# redirection from a short url
get '/:base36' do |base36|
# probably not necessary...
if base36 =~ /[[:alnum:]]+/
begin
id = base36.to_i(36)
address = Address.get(id)
log = Log.create(:useragent => request.user_agent)
address.logs << log
# log.save
address.save
# address.logs.save
address.logs.length.to_s
# redirect address.url
rescue
redirect '/'
end
else
redirect '/'
end
end
视图总是0
。这个代码有什么问题
好的,所以我尝试将字符串字段推到过长的useragent。字符串限制为50个字符。#datamapper irc频道的人帮了我的忙,.save
方法在这种情况下返回false,数据不会被存储。评论说:
address.logs << log
# log.save
将日志推送到日志集后保存日志:
log = Log.new(:useragent => request.user_agent)
address.logs << log
log.save # not a comment, just a self-explaining code
log=log.new(:useragent=>request.user\u agent)
address.logsOK,所以我尝试将字符串字段推到过长的useragent。字符串限制为50个字符。#datamapper irc频道上的人帮了我的忙。在这种情况下,.save方法返回false,数据未存储
log = Log.create(:useragent => request.user_agent, :address => address)
log = Log.new(:useragent => request.user_agent)
address.logs << log
log.save # not a comment, just a self-explaining code