2014-01-29 61 views
0

我是ROR的新手。 我有一個控制器,其中我得到在available_users可變搜索結果..如何在json reponse中創建臨時屬性並在軌道活動記錄中使用

availble_users //some active record result with id,name & address 
available_users.each do |userstatus| 
      userstatus.class_eval do 
      attr_accessor :is_friend 
      end 
      if current_user.invitations.find_by(:friend_id => userstatus.id) //invitation is another table 
      userstatus.is_friend = "true" 
      else 
      userstatus.is_friend = "false" 
      end 
     end 
     render json: available_users 

但是當我得到上AJAX請求的響應它所服務的同一陣列,而不包括is_friend柱。

這裏是我的json響應。

id: 2 
name: abc 
address: 

請誰能指出我爲什麼它不附加這個臨時屬性。 謝謝。

回答

0

,你可以做你如果傳遞的方法選項to_json

render json: available_users.to_json(:methods => :is_friend) 

將工作或這是什麼

available_users.each do |userstatus| 
     if current_user.invitations.find_by(:friend_id => userstatus.id) //invitation is another table 
     userstatus["is_friend"] = "true" 
     else 
     userstatus["is_friend"] = "false" 
     end 

    end 
    render json: available_users 

[]=write_attribute

+0

第二個方法的別名不工作,我嘗試過這個。 顯示「不能寫未知屬性」is_friend'「 第一種方法is_friend不是在我的邀請模式,所以我怎麼能訪問它。 我創建它臨時。 – NamingException

+0

'attr_accessor'爲'is_friend'創建一個getter和setter。吸氣劑就是它所稱的你在方法選項中傳遞它的東西 – usha