lib/snaptable/constructor/collection.rb in snaptable-0.2.1 vs lib/snaptable/constructor/collection.rb in snaptable-0.3.0
- old
+ new
@@ -1,32 +1,40 @@
module Snaptable
module Constructor
module Collection
def collection
- @collection ||= model.includes(belongs_to_associations)
+ @collection ||= if Snaptable.use_permission
+ current_permission.records(params[:controller], model, @token)
+ else
+ model
+ end.includes(belongs_to_associations)
end
def records
@records ||= filter(collection).paginate(page: params[:page], per_page: 30).order(sort_column + " " + sort_direction)
end
def filter(collection)
if options[:search] == true
- collection.joins(search_associations).where(query_fields, query: "%#{params[:query]}%", id: params[:query].to_i)
+ collection.joins(search_associations).where(query, query: "%#{params[:query]}%", id: params[:query].to_i)
else
collection
end
end
private
- def query_fields
- self.class::Search.fields.map do |key, values|
+ def query
+ query_fields.map do |key, values|
values.map do |value|
values.map{ |v| "#{key}.#{v} LIKE :query OR"}.join(" ")
end
end.join(" ") + " #{column_name('id')} = :id"
+ end
+
+ def query_fields
+ self.class::Search.fields || { model.table_name => model.columns.select{ |c| c.type == :string }.map{ |c| c.name } }
end
def search_associations
self.class::Search.associations
end
\ No newline at end of file