DataMapper не может сохранить в mysql и создать объект с id = nil - PullRequest
0 голосов
/ 29 октября 2011

Я следую примеру tinyclone в Cloning Internet Application с Ruby и пытаюсь создать объект, который будет сохранен в mysql.

Однако всякий раз, когда я пытаюсь создать объект Url (см. Код ниже),результат всегда "=> Url @ id = nil @original =" http://www.gmail.com" @ link_identifier = nil "

Идентификатор не создан и данные не сохранены в базе данных. Ссылка на базу данных 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 Ответ

2 голосов
/ 29 октября 2011

В вашей модели URL ссылка является обязательной ассоциацией. Вы не можете создать URL без ссылки, потому что проверка не удастся. Если вы хотите создавать URL-адреса, не связывая их со ссылкой, вы можете написать belongs_to :link, :required => false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...