#mysql #ruby #datamapper
#mysql #ruby #datamapper
Вопрос:
Я следую примеру tinyclone при клонировании интернет-приложения с помощью Ruby и пытаюсь создать объект для сохранения в mysql.
Однако всякий раз, когда я пытаюсь создать объект Url (см. Код Ниже), результат всегда «=> Url @id = nil @original =»http://www.gmail.com » @link_identifier=ноль»
Идентификатор не создается, и данные не сохраняются в базе данных. Ссылка на базу данных 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. По-видимому, мне нужно было бы сначала создать link и link_identifier.
Ответ №1:
В вашей модели Url ссылка является обязательной ассоциацией. Вы не можете создать URL-адрес без ссылки, потому что проверка завершится неудачей. Если вы хотите иметь возможность создавать URL-адреса, не связывая их со ссылкой, вы можете написать belongs_to :link, :required => false