38 lines
790 B
Ruby
38 lines
790 B
Ruby
module SetBookLeaf
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
before_action :set_book
|
|
before_action :set_leaf, :set_leafable, only: %i[ show edit update destroy ]
|
|
end
|
|
|
|
private
|
|
def set_book
|
|
@book = Book.accessable_or_published.find(params[:book_id])
|
|
end
|
|
|
|
def set_leaf
|
|
@leaf = @book.leaves.active.find(params[:id])
|
|
end
|
|
|
|
def set_leafable
|
|
instance_variable_set "@#{instance_name}", @leaf.leafable
|
|
end
|
|
|
|
def ensure_editable
|
|
head :forbidden unless @book.editable?
|
|
end
|
|
|
|
def model_class
|
|
controller_leafable_name.constantize
|
|
end
|
|
|
|
def instance_name
|
|
controller_leafable_name.underscore
|
|
end
|
|
|
|
def controller_leafable_name
|
|
self.class.to_s.remove("Controller").demodulize.singularize
|
|
end
|
|
end
|