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

时间:2011-10-29 07:10:44

标签: mysql ruby datamapper

我正在使用Ruby克隆Internet应用程序中的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>

1 个答案:

答案 0 :(得分:2)

在您的网址模型中,链接是必需的关联。您无法在没有链接的情况下创建网址,因为验证将失败。如果您希望能够创建网址而不将其与链接相关联,则可以编写belongs_to :link, :required => false