Method: AgileCommonHelper#agile_name_for_id

Defined in:
app/helpers/agile_common_helper.rb

#agile_name_for_id(model, field, field_name, id = nil) ⇒ Object

Will return descriptive text for id key when field in one table (table) has belongs_to relation to other table.

Parameters:

model

String. Table (table) model name (lowercase).

field

String. Field name holding the value of descriptive text.

field_name

String. ID field name. This is by default id, but can be any other

(preferred unique) field.

value

Value of id_field. Usually an id key but can be any other data type.

Example:

# usage in program.
agile_name_for_id('ar_user', 'name', nil, ar_page.created_by)

# usage in form
columns:
  2: 
    name: site_id
    eval: agile_name_for_id,site,name
# username is saved to document instead of user.id field
  5: 
    name: user
    eval: agile_name_for_id,ar_user,name,username

Returns: String. Name (descriptive value) for specified key in table.



142
143
144
145
146
147
148
149
150
# File 'app/helpers/agile_common_helper.rb', line 142

def agile_name_for_id(model, field, field_name, id = nil)
  return '' if id.nil?

  field_name = (field_name || 'id').strip.to_sym
  field = field.strip.to_sym
  model = model.strip.classify.constantize if model.class == String
  record = model.find_by(field_name => id)
  record.nil? ? '' : (record.send(field) rescue '?? not defined')
end