2017-05-03 3 views
0

このifステートメントの周りを頭で囲むのに問題があります。それにはすぐ後にブロックが続く条件があります。これはどういう意味ですか、なぜこれをするのですか?これはDeviseのソースコードからのものです。Rubyの構文 - If ifステートメントをブロックする(Devise Source)

if validate(resource){ hashed = true; resource.valid_password?(password) } 
    remember_me(resource) 
    resource.after_database_authentication 
    success!(resource) 
    end 

全クラスはここにある:https://github.com/plataformatec/devise/blob/master/lib/devise/strategies/database_authenticatable.rb

答えて

1

Devise::Strategies::Authenticable#validateは、ブロックを受け入れます。

validated = validate(resource) do 
    hashed = true 
    resource.valid_password?(password) 
end 

if validated 
    remember_me(resource) 
    resource.after_database_authentication 
    success!(resource) 
end 

は、なぜ彼らはそれをこのように書くでしょう - いいえアイデア:?

あなたが投稿したコードは、短い形式です。おそらくrubocopの不足のために。

+0

私には方法がブロックを取ることさえできませんでした。ありがとう! – Trinculo

+1

@ Trinculo:メソッドがブロックを取っていなくても、それにもかかわらず常に1つを渡すことができます。 –

+0

@SergioTulentsev - ありがとう、ありがとう。 – Trinculo

関連する問題