class Engine2::ForeignBlobStoreAction

Attributes

field[RW]
model[RW]

Public Instance Methods

invoke(handler) click to toggle source
# File lib/engine2/action/infra.rb, line 169
def invoke handler
    handler.permit id = handler.params[:owner]

    inf = model.type_info[field]
    assoc = model.association_reflections[inf[:assoc_name]]
    blob_model = assoc.associated_class

    rec = model.naked.select(assoc[:key]).where(model.primary_keys_hash(split_keys(id))).first
    handler.permit rec
    result = blob_model.naked.select(inf[:name_field], Sequel.char_length(inf[:bytes_field]).as(:length)).where(blob_model.primary_key => rec[assoc[:key]]).first

    # handler.permit result
    {file_name: result ? result[inf[:name_field]] : :empty, blob_length: result ? result[:length] : 0}
end