DataMapper 无法保存到 mysql 并创建 id = nil 的对象



我正在使用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

相关内容

最新更新