2010-11-06 78 views
0

我試圖在Rails 3控制檯中運行這個,但是當我這樣做時,沒有任何反應。它出什麼問題了?謝謝閱讀。爲什麼這個多線控制檯模塊不能在Rails 3中工作?

Note.find_all_by_user_id(19).each do |a|; a.user_id = 1;a.save; end; 

編輯:

本來應該Note.find_all_by_user_id。我改變了上面的一行。雖然同樣的問題發生。

Note.find_all_by_user_id(19) 
=> [#<Note id: 27, user_id: 19, text: "sample text", created_at: "2010-11-02 15:40:19", updated_at: "2010-11-02 15:40:19">, #<Note id: 28, user_id: 19, text: "sample text", created_at: "2010-11-05 21:40:16", updated_at: "2010-11-05 21:40:16">] 

Note.find_all_by_user_id(19).each do |a|; a.user_id = 1;a.save!; end; 
nothing happens 
+0

如果您只是運行「set = Notes.find_find_all_by_user_id(19)',會發生什麼?另外,如果您使用「保存」,它會做什麼?而不是'保存'? – monocle 2010-11-06 01:39:24

+0

@monocle - 我已經更新了這個問題。謝謝你的幫助! – ben 2010-11-06 02:24:29

回答

0

我用Rails 3.0.1和Ruby 1.9.2

嘗試打印出save的結果,看看它是否是真實的努力。難道你的user_id需要是唯一的嗎?它看起來像你的user_id不是表的主鍵...但它可以是輔助鍵嗎?也嘗試其他領域,看看它是否有效。

0

我想用這樣的分號壓制輸出。試試這個

> @x = 0 
> [1,2,3].each do |a|; @x += a; end; 

我沒有得到任何輸出。但隨後

> @x 
=> 6 
1

由於單片指出的那樣,你就不會在這裏得到任何輸出,因爲IRB/Rails的控制檯不返回使用了「冗長」做/結束語法稱爲塊東西。

無論你在塊內部做什麼都會發生,但你不會從控制檯收到任何輸出。如果你真的想要的,而不是:

Note.find_all_by_user_id(19).each do |a|; a.user_id = 1;a.save; end; 

嘗試的花括號語法:

Note.find_all_by_user_id(19).each { |a| a.user_id = 1; a.save } 

更多關於大括號中的「哲學」的區別,做/結束,看看這裏: http://talklikeaduck.denhaven2.com/2007/10/02/ruby-blocks-do-or-brace

相關問題