0

在我的模型之一,我有這個如何獲取:通過關聯值的方法?

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

我想知道怎樣才能從服務

我列service和我的服務模式description得到的值。我正在使用elasticsearch,我想索引服務模型。

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": [] 

服務正在獲取一個空數組。如果它是一個通過協會,它應該被包含在專業人士?

需要通過協會和什麼是正確的方式一些幫助。

感謝

回答

0

使用:methods參數包括ActiveRecord的instance 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 
相關問題