我正在尝试创建单表继承(Single Table Inheritance)。
但是,控制器必须能够知道要查找或创建哪个类。这些基于另一个类。
例如,type = Letter 的 ContactEvent 需要从相应的模型 Letter 中获取属性。
以下是我尝试做的事情并遇到了问题,如下所示。
我需要能够动态调用分配 EventClass 的值,以便它可以是 Letter.find(:conditions =>) 或 Calls.find(:conditions =>),具体取决于控制器正在处理哪种类型。
但是,控制器必须能够知道要查找或创建哪个类。这些基于另一个类。
例如,type = Letter 的 ContactEvent 需要从相应的模型 Letter 中获取属性。
以下是我尝试做的事情并遇到了问题,如下所示。
我需要能够动态调用分配 EventClass 的值,以便它可以是 Letter.find(:conditions =>) 或 Calls.find(:conditions =>),具体取决于控制器正在处理哪种类型。
def new
@contact_event = ContactEvent.new
@contact_event.type = params[:event_type] # can be letter, call, postcard, email
@contact_event.event_id = params[:event_id] # that ID to the corresponding Model
@contact_event.contact_id = params[:contact]
@EventClass = case
when @contact_event.type == 'letter' then 'Letter'
when @contact_event.type == 'call' then 'Call'
when @contact_event.type == 'email' then 'Email'
以下是获取的信息:
@event = @EventClass.find(@contact_letter.letter_id) #how do I make @EventClass actually the Class?SNAG
# substitution of variables into the body of the contact_event
@event.body.gsub!("{FirstName}", @contact.first_name)
@event.body.gsub!("{Company}", @contact.company_name)
@evebt.body.gsub!("{Colleagues}", @colleagues.to_sentence)
@contact_event.body = @event.body
@contact_event.status = "sent"
end