Deviseのrespond_withの引数で渡される、serialize_optionsのキーの意味を知りたい


<https://github.com/plataformatec/devise/blob/1a0192201b317d3f1bac88f5c5b4926d527b1b39/app/controllers/devise/sessions_controller.rb>

で、

`respond_with(resource, serialize_options(resource))`

という処理で最終的に、`.erb`に処理を渡していると思うのですが、  
`respond_with`の動きがわかりません。

[code]

      def serialize_options(resource)
        methods = resource_class.authentication_keys.dup
        methods = methods.keys if methods.is_a?(Hash)
        methods << :password if resource.respond_to?(:password)
        { methods: methods, only: [:password] }
      end
    
[/code]

で、
`methods`と`only`をキーに持つHashを作っていて`respond_with`はこのHashを引数に受け取っているようではありますが...
この2つのキーにはどういう意味があるのでしょうか？




完全には理解できていませんが、このコミット（特にテスト）を見てなんとなく役割がわかりました。

<https://github.com/plataformatec/devise/commit/3cedba1de8345b5f5f9055acd5513e893ed8d497>

methods には config/initializers/devise.rb の authentication_keys が利用されます。

デフォルトは :email になっています。

[code]

    # config.authentication_keys = [ :email ]
    
[/code]

これを :subdomain に変えたりすると、認証時にuser.emailではなくuser.subdomainが使われるようです。（おそらく）

[code]

    config.authentication_keys = [ :subdomain ]
    
[/code]

あとはGitHubのblameやhistoryを使ってコミットログをさかのぼったり、pryやRubyMineを使ってじっくりデバッグ実行したりするとその他の不明な点も解決されるのではないでしょうか？

以上、ご参考までに。

