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, #make_error_box, #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.



234
235
236
# File 'lib/ezframe/column_type.rb', line 234

def db_data
  @db_data
end

Instance Method Details

#db_typeObject



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

def db_type
  return "int"
end

#form(opts = {}) ⇒ Object



254
255
256
257
258
259
260
261
262
263
264
# File 'lib/ezframe/column_type.rb', line 254

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, after: make_error_box(key))
end

#set_db_dataObject



270
271
272
273
274
275
# File 'lib/ezframe/column_type.rb', line 270

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

#target_tableObject



236
237
238
239
240
# File 'lib/ezframe/column_type.rb', line 236

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

#view(opts = {}) ⇒ Object



242
243
244
245
246
247
248
249
250
251
252
# File 'lib/ezframe/column_type.rb', line 242

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