0

如果這些屬性值位於大散列(session [:some_big_hash])中,那麼將屬性值分配給(模型)實例變量的最簡單方法是什麼?通常的模型屬性值還有其他鍵值對(不屬於模型)?Ruby/Rails:爲實例變量賦值

的情況是這樣的:

# 1. Get the user from the db: 
@user = User.where(id: 1).first 

# 2. Add some additional data from a hash inside the session 
@user = @user.somehow_extract_the_values_for_the_model_from(session[:some_big_hash]) 
+0

過於空泛,真正 – apneadiving 2013-05-01 10:14:23

+0

@apneadiving你能在這裏加入? http://chat.stackoverflow.com/rooms/27184/ruby-conceptual – 2013-05-01 10:18:34

+0

@apneadiving:第2步應該查找模型實例可以分配的會話[:some_big_hash]中的所有值,然後精確指定這些值(可能覆蓋任何現有的屬性值),但忽略會話[:some_big_hash]的其餘部分,因爲嘗試執行類似user = User.new(session [:some_big_hash])的操作顯然會失敗。這有幫助嗎? – TomDogg 2013-05-01 10:26:29

回答

0

當值設置爲在第一個地方的會議,你應該直接使用

session[:user_specific_attributes] = {...} 

,而不是將它們添加到的「根」會話哈希。

所以後來,你可以這樣做:

@user.foo(session[:user_specific_attributes]) 
+0

「.foo」究竟會在這裏?它不能是新的,因爲它會丟棄從數據庫檢索到的值... – TomDogg 2013-05-01 10:37:00

+0

但這是另一個問題。它可能是'update_attributes'。 – 2013-05-01 10:40:20