我正在做一個查詢,如:字符串轉換爲散列包括
users = User.includes(:address, friends: [:address, :followers])
然而,在的部分包括部分將是即":address, friends: [:address, :followers]"
一個字符串(它是從一個Rails應用程序來一Rails API)。是否有可能將此字符串轉換爲需要的哈希? eval()不起作用。
(對於YAML)編輯:
def show
str = "address, { friends: [ address, followers ] }"
args = YAML.load("[ #{str} ]")
user = User.includes(*args).find(params[:id])
render :template => 'users/show'
end
'eval'會工作如果你用方括號把它包圍起來,那麼很好 - 但是在用戶輸入中使用'eval'將是非常愚蠢的。 –
'eval(「User.includes(#{string})」)'也可以,但正如@Jordan所說的,你做錯了。您應該從應用程序接收一些內部格式的包含列表,然後_safely在其上構建includes_列表。 – mudasobwa
評估「用戶代碼」是非常危險的任務。最後考慮沙盒代碼執行的地方。 [閱讀這篇文章關於$安全在Ruby](http://stackoverflow.com/questions/169303/how-to-run-untrusted-ruby-code-inside-a-safe-sandbox)。 –