我正在尝试在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 :(得分:1)
正如monocle指出的那样,你不会在这里获得任何输出,因为IRB / Rails控制台不会从使用“详细”do / end语法调用的块返回任何内容。
无论你在块内做什么都会发生,但你不会从控制台收到任何输出。如果你真的想要,而不是:
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 }
有关花括号和do / end之间“哲学”差异的更多信息,请查看此处:http://talklikeaduck.denhaven2.com/2007/10/02/ruby-blocks-do-or-brace
答案 1 :(得分:0)
我正在尝试使用Rails 3.0.1和Ruby 1.9.2
尝试打印出save
的结果,看看是否属实。难道你的user_id需要是唯一的吗?看起来你的user_id不是表的主键......但是它可以是二级密钥吗?还可以尝试其他字段,看看它是否有效。
答案 2 :(得分:0)
我认为使用这样的分号会抑制输出。试试这个
> @x = 0
> [1,2,3].each do |a|; @x += a; end;
我没有得到任何输出。但是接下来
> @x
=> 6