Я пытаюсь построить наследование в своем приложении.Inheritance misunderstood
На самом деле все просто, у меня есть несколько моделей, и некоторые из них должны быть «архивами», это просто означает, что я собираюсь перенести данные из моей открытой схемы базы данных в схему архива (та же база данных).
Каждый модели имеют save'itself'OnArchive Способы»на примере:
def saveContactArchive(contact)
record = ArchContacts.new
record.id=contact.id
record.information_id=contact.information_id
record.is_internal = contact.is_internal if (contact.is_internal != nil)
record.type_contact_id = contact.type_contact_id if (contact.type_contact_id != nil)
record.user_id = contact.user_id if (contact.user_id != nil)
record.info_readed = contact.info_readed if (contact.info_readed != nil)
record.not_received = contact.not_received if (contact.not_received != nil)
record.society_name = contact.society_name if (contact.society_name != nil)
record.person_name = contact.person_name if (contact.person_name != nil)
record.email = contact.email if (contact.email != nil)
record.receipt = contact.receipt if (contact.receipt != nil)
record.receipt_confirmed = contact.receipt_confirmed if (contact.receipt_confirmed != nil)
record.created_at = contact.created_at if (contact.created_at != nil)
record.updated_at = contact.updated_at if (contact.updated_at != nil)
id = contact.id
if (!existOnArchive(id))
return record.save
else
return true
end
end
и некоторые из моделей имеют methodes save'arrayOf'OnArchive пример:
def saveContactsArchive(contacts)
resultContact = false
for c in contacts
if(c.id != nil)
resultContact = saveContactArchive(c)
else
resultContact = true
end
if(!resultContact)
ArchiveLogs.debug("Sauvegarde d'un contact sur l archive echoue, contact concerne "+c.inspect)
end
end
return resultContact
end
Я пытаясь создать родительский класс для всех этих моделей, называемых Archive. Этот класс woud определяют 2 метода
class Archive
def saveOnArchive(element)
"Save on archive"
end
def saveArrayOnArchive(elements)
"Save an array on archive"
end
end
saveArrayOnArchive следовать той же логике, для всех моделей, как для saveContactsArchive; loop on array, для каждого вызова элемента saveOnArchive, записывать журналы, если ошибка.
Мои вопросы;
1) что лучше создать модульный saveArrayOnArchive и как вызвать метод children saveOnArchive из родительского класса?
2) Какие модели будут выглядеть? переделать ли они все методы? вызов супер, если они ничего не добавляют к родительскому методу?
3) является то, что даже возможно, так как мои модели уже childreen от ActiveRecord класса ArchContacts < ActiveRecord :: Base ---- EDIT ---- Почему Шоуда мои модели быть детьми ActiveRecord :: Base (I просто следовал другой модели DEV без мозга ....) ---- EDIT ----
3 в 1) Как добиться этого, если кто-то меня понял ... любая помощь apricieted
Это выглядит потрясающе !!! идеальное решение для моих нужд, мне понадобится несколько раз, чтобы понять все, но я за него :)! Спасибо !! –