0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

namespaceの利用

Last updated at Posted at 2020-03-09

namespaceとは

・namespace = 名前空間
・メソッド名や変数名が衝突しないようにするための機能で、classやmoduleを使用する。
・衝突とは同名での定義のことである。
・通常同名のメソッドがあった場合にはエラーが発生せずに実行可能なメソッドを実行してしまう。両方とも実行可能な場合は後に定義された方
・同名のメソッドを定義できるように、機能ごとにclassで分ける方法(PostやTweetなど)とmoduleで分ける方法がある。両者の違いは以下

  • classはインスタンス化ができる
  • moduleはインスタンス化ができない(固定値やメソッドのみをもつ)

module

module A
  def self.say_hello
    puts "Hello"
  end
end

module B
  def say_hello
    puts "Hello"
   end
  module_function :say_hello
end
A::say_hello
B::say_hello

module XXX ~ end のようにmoduleを定義する
外部からこのメソッドを実行するにはselfをつけるかmodule_functionを定義する必要がある
module内のメソッドを実行するにはmodule名::メソッド名と記述する

namespaceを用いた機能の管理

管理者機能をまとめたコントローラーをcontroller/admin以下に作成した場合にルーティング生成に必要な記述は以下の通り

product_controller.rb
class Admin::ProductsController < ApplicationController
  def index
  end
end

adminフォルダ内にあるためAdmin::ProductControllerと表記する

routes.rb
namespace :admin do
  resources :products, only: :index
end

namespace :admin do
でフォルダの場所を記述し、その中でproductsコントローラのルーティングを記述する(今回はindexのみ)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?