Class: Ezframe::ForeignType

Inherits:
IntType show all
Defined in:
lib/ezframe/column_type.rb

Instance Attribute Summary collapse

Attributes inherited from TypeBase

#attribute, #error, #parent

Instance Method Summary collapse

Methods inherited from IntType

#normalize, #validate, #value=

Methods inherited from TextType

#normalize, #value=

Methods inherited from TypeBase

#db_value, get_class, #initialize, #key, #label, #multi_inputs?, #no_edit?, #no_view?, #normalize, #type, type_name, #use_view_format, #validate, #value, #value=

Constructor Details

This class inherits a constructor from Ezframe::TypeBase

Instance Attribute Details

#db_dataObject

Returns the value of attribute db_data.



227
228
229
# File 'lib/ezframe/column_type.rb', line 227

def db_data
  @db_data
end

Instance Method Details

#db_typeObject



259
260
261
# File 'lib/ezframe/column_type.rb', line 259

def db_type
  return "int"
end

#form(opts = {}) ⇒ Object



247
248
249
250
251
252
253
254
255
256
257
# File 'lib/ezframe/column_type.rb', line 247

def form(opts = {})
  return nil if no_edit? && !opts[:force]
  view_key = @attribute[:menu_column] || @attribute[:view_column]
  data_h = DB::Cache[target_table.to_sym]
  menu_a = data_h.map do |id, data|
    [ data[:id], data[view_key&.to_sym] ]
  end
  key = self.key
  key ="#{key}#{opts[:key_suffix]}" if opts[:key_suffix]
  return Ht.select(name: key, class: %w[browser-default], item: menu_a, value: @value)
end

#set_db_dataObject



263
264
265
266
267
268
# File 'lib/ezframe/column_type.rb', line 263

def set_db_data
  @db_data = {}
  if @value
    @db_data = DB::Cache[target_table.to_sym][@value]
  end
end

#target_tableObject



229
230
231
232
233
# File 'lib/ezframe/column_type.rb', line 229

def target_table
  table = @attribute[:table]
  return table if table
  return self.key
end

#view(opts = {}) ⇒ Object



235
236
237
238
239
240
241
242
243
244
245
# File 'lib/ezframe/column_type.rb', line 235

def view(opts = {})
  return nil if no_view? && !opts[:force]
  colkey = @attribute[:view_column]
  if @value && colkey
    data_h = DB::Cache[target_table.to_sym]
    data = data_h[@value.to_i]
    return nil unless data
    return data[colkey.to_sym]
  end
  return nil
end