[解決済み] .callの役割は何ですか?
2022-03-05 14:55:42
質問
I
出くわした
この方法は、最終的に
.call
が使われています。
def allow?(controller, action, resource = nil)
allowed = @allow_all || @allowed_actions[[controller.to_s, action.to_s]]
allowed && (allowed == true || resource && allowed.call(resource))
end
しかし
ドキュメント
をいつ、どのように使えばいいのかがよくわからないのです。
.call
.
解決方法は?
の目的は
.call
メソッドを呼び出す/実行することです。
Proc/Method
のインスタンスを作成します。以下の例を見れば、もっとわかりやすいかもしれません。
m = 12.method("+")
# => `method` gets the `+` method defined in the `Fixnum` instance
# m.class
# => Method
m.call(3) #=> 15
# `3` is passed inside the `+` method as argument
m.call(20) #=> 32
上記の例では
Fixnum
12は、メソッド
+
が定義されている。
投稿された例では
def allow?(controller, action, resource = nil)
allowed = @allow_all || @allowed_actions[[controller.to_s, action.to_s]]
allowed && (allowed == true || resource && allowed.call(resource))
end
@allowed_actions[[controller.to_s, action.to_s]]
が返されます。
Proc
インスタンスと
resource
は
param/argument
をメソッド呼び出しに変換します。
例えば
hash = {[:controller, :action] => 'value'}
# => {[:controller, :action]=>"value"}
> hash[[:controller,:value]]
# => nil
> hash[[:controller,:action]]
# => "value"
ご参考まで
: ルビーでは
Array
として
Key
の
Hash
オブジェクトを作成します。
関連
-
[解決済み] 新規ユーザー作成時に ActiveModel::ForbiddenAttributesError が発生する。
-
[解決済み] Herokuの問題 : あなたが探しているページは存在しません。
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] w(array)とはどういう意味ですか?
-
[解決済み] Rubyのmap(&:name)ってどういう意味?
-
[解決済み] RSpecのlet()はいつ使うのか?
-
[解決済み] 実行時にメソッドが定義されている場所を見つけるには?
-
[解決済み】RailsでOOデザイン。どこにものを置くか
-
[解決済み】RubyにあってPythonにないもの、またその逆は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 新規ユーザー作成時に ActiveModel::ForbiddenAttributesError が発生する。
-
[解決済み] デバイスを使用する現在のユーザーメソッド
-
[解決済み] heroku push rejected, failed to compile Ruby/rails app
-
[解決済み] Rubyで変数をインクリメントする [重複]。
-
[解決済み] PG::ConnectionBad - サーバーに接続できませんでした。接続が拒否されました。
-
[解決済み] Paramが無いか、値が空である。ParameterMissing in ResultsController#update
-
[解決済み] Oauth2 Instagram API "リダイレクトURIが登録されたリダイレクトURIと一致しない"
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?
-
[解決済み] Railsで `before_action` での `only:` はどのように機能するのですか?
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?