2017-09-05 58 views
0

我有一個控制器,我傳遞了表/模型(:object),屬性(:key)和搜索條件(:id)的名稱:通過表名和變量鍵在軌中檢索所有記錄

def getAll 
    obj = params.require(:object) 
    datarecord = obj.classify.constantize 
    key=params[:key] + "= :i"; 
    render json: { result: datarecord.find(:all, :conditions => [ key, {:i =>params[:id]}])} 
end 

不幸的是,我沒有得到預期的結果。錯誤消息是找到0個記錄但預計有2個記錄。

例如,我通過下面的參數在我的控制器: 對象:「機遇」號 鍵:「ACCOUNT_ID」 ID:2

結果,我想要檢索的機會,表中的所有記錄,其中屬於account_id = 2的帳戶。

任何想法我的代碼中有什麼問題?

謝謝, 邁克爾

回答

0

解決方案:

def getAll 
    obj = params.require(:object) 
    datarecord = obj.classify.constantize 
    render json: { result: datarecord.where(params[:key] => params[:id]) } 
end 

建議:

def get_all 
    model = params.require(:model).safe_constantize 
    conditions = params[:conditions].to_h 
    records = model.where(conditions) 
    render json: { result: records } 
end 
  • 實施例請求:
    • 模型= '機會'
    • 條件= { 'ACCOUNT_ID'=> 2}
+0

偉大的!謝謝你的作品! –

0

.find總是返回1個記錄你想要什麼(如果我理解正確的)是datarecord.where(key => params[:id])

where將返回所有的記錄,你已經有鑰匙和鑰匙應該是的價值