Class: SampleDetails

Inherits:
Object
  • Object
show all
Defined in:
app/models/sample_details.rb

Defined Under Namespace

Classes: Collection

Class Method Summary collapse

Class Method Details

.for(samples, detail_fields = []) ⇒ Object

Returns a SampleDetails::Collection object for the given samples (which should be a relation or list of AR Sample objects) optionally, if detail_fields are specified, only those details fields will be returned (expects a list of strings)



79
80
81
82
83
84
85
86
87
88
89
# File 'app/models/sample_details.rb', line 79

def self.for(samples, detail_fields = [])
  fields = SampleDetailField.eager_load(:sample_detail_group).order(:order)
  values = SampleDetailValue.preload({:sample_detail_field => :sample_detail_group}).where(sample_id: samples)

  if detail_fields && !detail_fields.empty?
    fields = fields.where(name: detail_fields)
    values = values.where(sample_detail_field_id: fields)
  end

  Collection.new(samples, fields.map { |f| f.sample_detail_group }.uniq, fields, values)
end