0

私のモデルの1つにこれがあります

has_many :professionals
has_many :services, :through => :professionals

サービスから値を取得する方法を確認しようとしています

サービスモデルに列がserviceあります。descriptionElasticsearch を使用しており、サービス モデルのインデックスを作成したいと考えています。

def service_name
  services.map(&:service)
end

マッピングが正しい方法であるかどうかはわかりません。これを使用してjsonを取得することになっています:

def to_indexed_json
    to_json( 
      include: { 
        professionals: { 
          only: [:first_name, :last_name]
          },
        services: {
          only: [:service_name]
          }
        }  
      )
end

これは私が得ているものです

     "professionals": [
              {
                 "first_name": "Happy",
                 "last_name": "Gilmore"
              }
           ],
     "services": []

サービスが空の配列を取得しています。スルーアソシエーションなら、専門家に囲まれるべきですか?

関連付けや適切な方法についてのヘルプが必要です。

ありがとう

4

1 に答える 1

0

パラメーターを使用:methodsして ActiveRecordinstance methodsを JSON 出力に含めます。:only:except使用しますDB columns only

参照: http://apidock.com/rails/ActiveRecord/Serialization/to_json

これを試して:

def to_indexed_json
  to_json(
    methods: [:service_name],
    include: { 
      professionals: { only: [:first_name, :last_name] }
    }
  )
end

#service_name は次のようになります。

def service_name
  services.pluck(:service)
end
于 2013-11-04T12:40:28.003 に答える