我正在使用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>
答案 0 :(得分:2)
在您的网址模型中,链接是必需的关联。您无法在没有链接的情况下创建网址,因为验证将失败。如果您希望能够创建网址而不将其与链接相关联,则可以编写belongs_to :link, :required => false