У меня есть несколько моделей: ContactEmail, ContactLetter, ContactCall
Мой контроллер не знает, что ему передают. Он знает это только как событие (поэтому событие может быть конкретным экземпляром ContactEmail, ContactLetter, ContactCall)
Каждый из них имеет свой атрибут. У ContactEmail есть email_id; У ContactLetter есть letter_id, у ContactCall есть call_id.
Так вот мой вопрос:
Как получить доступ к соответствующей модели и соответствующему идентификатору для любого данного экземпляра события?
Другими словами, как я могу извлечь из события Имя модели (Email, Letter), а затем назначить правильный идентификатор (email_id, letter_id), чтобы затем найти нужную запись?
Я начал со следующего:
model = event.class # this will show ContactPostalcard
puts event.send('contact_id')
puts model
short_model_name = model.name.sub('Contact','')
puts short_model_name
short_model = short_model_name.class
key_name = short_model_name.foreign_key
puts key_name
asset_id = event.send("#{key_name}")
puts asset_id
asset = short_model_name.send(find.send(asset_id))
Что я хочу сделать, так это найти связанный ресурс (Email, Letter), который неявно присутствует в событии, и получить конкретный ресурс, на который ссылается email_id (letter_id, voicemail_id), который есть в каждом ContactEmail.
Например: asset = Email.find (ContactEmail.email_id) даст мне актив. Поэтому мне нужно было бы иметь возможность динамически создавать «Email», email_id. У меня есть части концептуально, но это не работает: (.
Присуждается Чубасу, , но хотел проверить, правильное ли это направление (некоторая дополнительная информация / уточнение):
ContactEmail.rb
class ContactEmail
def get_asset
email_id = self.email_id
asset = Email.find_by_email(email_id)
return asset
end
end
Это выглядит правильно?