lib/active_admin/resource.rb in activeadmin-0.6.6 vs lib/active_admin/resource.rb in activeadmin-1.0.0.pre1
- old
+ new
@@ -4,10 +4,11 @@
require 'active_admin/resource/page_presenters'
require 'active_admin/resource/pagination'
require 'active_admin/resource/routes'
require 'active_admin/resource/naming'
require 'active_admin/resource/scopes'
+require 'active_admin/resource/includes'
require 'active_admin/resource/scope_to'
require 'active_admin/resource/sidebars'
require 'active_admin/resource/belongs_to'
module ActiveAdmin
@@ -36,17 +37,20 @@
# An array of collection actions defined for this resource
attr_reader :collection_actions
# The default sort order to use in the controller
- attr_accessor :sort_order
+ attr_writer :sort_order
+ def sort_order
+ @sort_order ||= (resource_class.respond_to?(:primary_key) ? resource_class.primary_key.to_s : 'id') + '_desc'
+ end
# Set the configuration for the CSV
attr_writer :csv_builder
# Set breadcrumb builder
- attr_accessor :breadcrumb
+ attr_writer :breadcrumb
# Store a reference to the DSL so that we can dereference it during garbage collection.
attr_accessor :dsl
# The string identifying a class to decorate our resource with for the view.
@@ -55,12 +59,12 @@
module Base
def initialize(namespace, resource_class, options = {})
@namespace = namespace
@resource_class_name = "::#{resource_class.name}"
- @options = default_options.merge(options)
- @sort_order = @options[:sort_order]
+ @options = options
+ @sort_order = options[:sort_order]
@member_actions, @collection_actions = [], []
end
end
include MethodOrProcHelper
@@ -72,13 +76,13 @@
include Menu
include Naming
include PagePresenters
include Pagination
include Scopes
+ include Includes
include ScopeTo
include Sidebars
- include Menu
include Routes
# The class this resource wraps. If you register the Post model, Resource#resource_class
# will point to the Post class
def resource_class
@@ -133,27 +137,22 @@
# The csv builder for this resource
def csv_builder
@csv_builder || default_csv_builder
end
+ def breadcrumb
+ instance_variable_defined?(:@breadcrumb) ? @breadcrumb : namespace.breadcrumb
+ end
+
def find_resource(id)
- resource = resource_class.where(resource_class.primary_key => id).first
+ resource = resource_class.public_send(method_for_find, id)
decorator_class ? decorator_class.new(resource) : resource
end
- # @deprecated
- def resource
- resource_class
- end
- ActiveAdmin::Deprecation.deprecate self, :resource,
- "ActiveAdmin::Resource#resource is deprecated. Please use #resource_class instead."
-
private
- def default_options
- {
- :sort_order => (resource_class.respond_to?(:primary_key) ? resource_class.primary_key.to_s : 'id') + '_desc'
- }
+ def method_for_find
+ resources_configuration[:self][:finder] || :"find_by_#{resource_class.primary_key}"
end
def default_csv_builder
@default_csv_builder ||= CSVBuilder.default_for_resource(resource_class)
end