モデル
###前提・実現したいこと
railsのGrapeを利用してUserモデルのレコードを返すAPIを作成しています。
mapでの処理が今後長くなるため、map処理内のメソッドをuser_attributes3のように外出ししようと考えています。
###発生している問題・エラーメッセージ
mapからメソッドuser_attributes3を呼び出すことができない。
そもそも、この表記方法はただしくないでしょうか。
NoMethodError (undefined method `sample_attribute' for #<User:0x007fc50adaf6c0>
どうぞよろしくお願いいたします。
###該当のソースコード
ruby
1module Resources 2 module V1 3 class Root < Grape::API 4 version 'v1' 5 format :json 6 content_type :json, 'application/json' 7 helpers do 8 def user_attributes2 9 User.all.map(&:attributes) 10 end 11 12 def user_attributes3(table) 13 table.attributes 14 end 15 end 16 # 期待する結果が帰ってくる 17 resource :user_attributes1 do 18 get do 19 User.all.map(&:attributes) 20 end 21 end 22 # 期待する結果が帰ってくる 23 resource :user_attributes2 do 24 get do 25 user_attributes2 26 end 27 end 28 # エラー 29 resource :user_attributes3 do 30 get do 31 User.all.map(&:user_attributes3) 32 end 33 end 34 35 # app/api/resources/v1/users.rbをマウント 36 mount Resources::V1::Users 37 38 # swaggerの設定 39 if defined? GrapeSwaggerRails 40 add_swagger_documentation( 41 #uninitialized constant GrapeSwagger::Markdown (NameError) 42 #markdown: GrapeSwagger::Markdown::RedcarpetAdapter, 43 #markdown: GrapeSwagger::Markdown::RedcarpetAdapter.new(render_options: { highlighter: :rouge }), 44 api_version: 'v1', 45 base_path: '/api', 46 hide_documentation_path: true, 47 hide_format: true 48 ) 49 end 50 end 51 end 52end
期待する結果
[ { "id": 1, "name": "Nike", "age": 13, "created_at": "2017-05-09T00:41:28.217Z", "updated_at": "2017-05-09T00:41:28.217Z" }, { "id": 2, "name": "Kukuri", "age": 13, "created_at": "2017-05-09T00:41:28.220Z", "updated_at": "2017-05-09T00:41:28.220Z" }, ]
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。