class Administrate::Field::BelongsToSearch

Public Instance Methods

associated_class() click to toggle source
Calls superclass method
# File lib/viniBaxter/spa/belongs_to_search.rb, line 14
def associated_class
  super
end
associated_resource_options() click to toggle source
# File lib/viniBaxter/spa/belongs_to_search.rb, line 42
def associated_resource_options
  # candidate_resources is Place::ActiveRecord_Relation
  [nil] + candidate_resources.map do |resource|
    # resource is #=> Place
    [display_candidate_resource(resource), resource.send(primary_key)]
  end
end
belong_to_scope_place(current_user, model) click to toggle source
# File lib/viniBaxter/spa/belongs_to_search.rb, line 18
def belong_to_scope_place(current_user, model)
  puts model
  # model is Package
  # create a room need package reference
  model_variable = model.to_s.underscore.pluralize #=> places
  # so we scope the current user packages
  # methode send(...) t.ly/56cI
  if current_user.admin? || current_user.super_admin?
    scoped_model = model.all.pluck(:id)
  else
    scoped_model = current_user.send(model_variable).pluck(:id)
  end

  candidates = Place.find(*scoped_model) # => array of Places
  # but we need an activeRecordRelation and no an array
  # let transform that array to an activeRecordRelation here t.ly/2D0A
  candidates_activeRecord = Place.where(id: candidates.map(&:id)) # => Place::ActiveRecord_Relation

  [nil] + candidates_activeRecord.map do |resource|
    [display_candidate_resource(resource), resource.send(primary_key)]
  end

end