Class: ActionDispatch::Routing::Mapper::Resources::Resource

Inherits:
Object
  • Object
show all
Defined in:
actionpack/lib/action_dispatch/routing/mapper.rb

Overview

:nodoc:

Direct Known Subclasses

SingletonResource

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(entities, api_only, shallow, options = {}) ⇒ Resource

Returns a new instance of Resource.



1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1172

def initialize(entities, api_only, shallow, options = {})
  if options[:param].to_s.include?(":")
    raise ArgumentError, ":param option can't contain colons"
  end

  @name       = entities.to_s
  @path       = (options[:path] || @name).to_s
  @controller = (options[:controller] || @name).to_s
  @as         = options[:as]
  @param      = (options[:param] || :id).to_sym
  @options    = options
  @shallow    = shallow
  @api_only   = api_only
  @only       = options.delete :only
  @except     = options.delete :except
end

Instance Attribute Details

#controllerObject (readonly)

Returns the value of attribute controller



1170
1171
1172
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1170

def controller
  @controller
end

#paramObject (readonly)

Returns the value of attribute param



1170
1171
1172
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1170

def param
  @param
end

#pathObject (readonly) Also known as: collection_scope

Returns the value of attribute path



1170
1171
1172
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1170

def path
  @path
end

Instance Method Details

#actionsObject



1197
1198
1199
1200
1201
1202
1203
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1197

def actions
  if @except
    available_actions - Array(@except).map(&:to_sym)
  else
    available_actions
  end
end

#available_actionsObject



1205
1206
1207
1208
1209
1210
1211
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1205

def available_actions
  if @only
    Array(@only).map(&:to_sym)
  else
    default_actions
  end
end

#collection_nameObject

Checks for uncountable plurals, and appends “_index” if the plural and singular form are the same.



1229
1230
1231
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1229

def collection_name
  singular == plural ? "#{plural}_index" : plural
end

#default_actionsObject



1189
1190
1191
1192
1193
1194
1195
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1189

def default_actions
  if @api_only
    [:index, :create, :show, :update, :destroy]
  else
    [:index, :create, :new, :show, :update, :destroy, :edit]
  end
end

#member_scopeObject Also known as: shallow_scope



1239
1240
1241
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1239

def member_scope
  "#{path}/:#{param}"
end

#nameObject



1213
1214
1215
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1213

def name
  @as || @name
end

#nested_paramObject



1249
1250
1251
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1249

def nested_param
  :"#{singular}_#{param}"
end

#nested_scopeObject



1253
1254
1255
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1253

def nested_scope
  "#{path}/:#{nested_param}"
end

#new_scope(new_path) ⇒ Object



1245
1246
1247
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1245

def new_scope(new_path)
  "#{path}/#{new_path}"
end

#pluralObject



1217
1218
1219
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1217

def plural
  @plural ||= name.to_s
end

#resource_scopeObject



1233
1234
1235
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1233

def resource_scope
  controller
end

#shallow?Boolean

Returns:

  • (Boolean)


1257
1258
1259
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1257

def shallow?
  @shallow
end

#singleton?Boolean

Returns:

  • (Boolean)


1261
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1261

def singleton?; false; end

#singularObject Also known as: member_name



1221
1222
1223
# File 'actionpack/lib/action_dispatch/routing/mapper.rb', line 1221

def singular
  @singular ||= name.to_s.singularize
end