Class: Babik::Table::Field
- Inherits:
-
Object
- Object
- Babik::Table::Field
- Defined in:
- lib/babik/queryset/lib/field.rb
Overview
Field module abstracts the concept of table field according to some useful conversions
Instance Method Summary collapse
-
#initialize(model, field) ⇒ Field
constructor
Create an actual field for a model.
-
#real_field ⇒ String
Check if the field requires some conversion and if that’s the case, return the converted final field If the field is a name of an association, it will be converted to the foreign entity id.
Constructor Details
#initialize(model, field) ⇒ Field
Create an actual field for a model.
13 14 15 16 |
# File 'lib/babik/queryset/lib/field.rb', line 13 def initialize(model, field) @model = model @field = field end |
Instance Method Details
#real_field ⇒ String
Check if the field requires some conversion and if that’s the case, return the converted final field If the field is a name of an association, it will be converted to the foreign entity id
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/babik/queryset/lib/field.rb', line 21 def real_field # If the selected field is a local attribute return the condition as-is (that's the most usual case) is_local_attribute = @model.column_names.include?(@field.to_s) return @field if is_local_attribute # If the selected field is the name of an association, convert it to be a right condition association = @model.reflect_on_association(@field.to_sym) # Only if the association is belongs to, the other associations will be checked by foreign filter method return association.foreign_key if association && association.belongs_to? # Field that is not present in the model raise "Unrecognized field #{@field} for model #{@model} in filter/exclude" end |