我正在使用Ruby克隆互联网应用程序中遵循tinyclone示例,并试图创建一个要存储到mysql中的对象。
然而,每当我尝试创建Url对象时(参见下面的代码),结果总是"=> Url @id=nil @original="http://www.gmail.com" @link_identifier=nil"
不创建id,也不将数据存储在数据库中。到sql数据库的链接是正确的,因为我已经尝试删除数据库并使用DataMapper.auto_migrate重新创建它!
有人能帮忙吗?谢谢。
DataMapper.setup(:default,'mysql://root@localhost/tinyclone')
class Url
include DataMapper::Resource
property :id, Serial
property :original, String, :length => 255
belongs_to :link
end
class Link
include DataMapper::Resource
property :identifier, String, :key => true
property :created_at, DateTime
has 1, :url
has n, :visits
end
DataMapper.finalize
url = Url.create(:original => 'http://www.gmail.com')
=> #<Url @id=nil @original="http://www.gmail.com" @link_identifier=nil>
在Url模型中,Link是必需的关联。你不能创建一个没有链接的url,因为验证会失败。如果您希望能够创建url而不将它们与链接相关联,您可以编写belongs_to :link, :required => false