2009-05-30 27 views
4

Rails控制台似乎不喜欢用分号分隔的同一行上的多个ruby语句。每当我这样做,下一行开始?>,我发现只有第一条语句被执行。 您是否必须将每个声明放在单独的行中?分号作为语句分隔符在Rails控制台中

>> user = User.new 
user = User.new 

=> #<User id: nil, username: "", hashed_password: "", first_name: "", last_name: "", email: "", display_name: "", user_level: 0, created_at: nil, updated_at: nil, posts_count: 0> 

>> user.username = "John"; hashed_password = "John"; first_name = "John"; last_name = "coltrane"; email = "[email protected]"; display_name = "Johndispay"; user_level = 9; 
user.username = "John"; hashed_password = "John"; first_name = "John"; last_name = "coltrane"; email = "[email protected]"; display_name = "Johndispay"; user_level = 9; 

?> user.save 
user.save 

=> true 

除了user.username = "John";一切都被忽略

+0

还要注意,代码实际上是全部执行的:您创建并设置了名为hashed_pa​​ssword,first_name等的局部变量。几乎每次当您认为您使用的软件有问题时,就是您做错了事! (几乎 - 有时确实有一个错误,但它不会是我寻找的第一件事);-) – 2009-05-30 21:33:11

回答

5

你需要说 “用户”。所以Ruby知道你的意思是调用用户实例的属性分配方法。否则,你只是设置局部变量称为“hashed_pa​​ssword”等

>> user.username = "John"; user.hashed_password = "John"; user.first_name = "John"; user.last_name = "coltrane"; user.email = "[email protected]"; user.display_name = "Johndispay"; user.user_level = 9; 

虽然,你可以只通过要在新实例上设置的属性的哈希值,像这样

>> user = User.new(:username => "John", :hashed_password => "John", ... 
+0

感谢您的散列提示! – eggdrop 2009-05-30 20:33:24

1

你确定你不是故意

user.username = "John"; user.hashed_password = "John"; 

我试图

>> a = 1; b= 2 
=> 2 

>> a 
=> 1 

>> b 
=> 2 

当某些事情不起作用时,您可以使用一条规则:始终将其降至最简单的情况。

4

这是尾随;在您的输入。当你把';'最后IRB会假设你想添加另一个语句。如果离开它,它将评估所有的语句并返回最后一个的返回值。

有时,如果我打电话是要回到大阵,我会做这样的事情的方法......

a = Account.entries; a.size 

这将节省我所需要的值,并只输出数组的大小而不是试图将其转储到控制台,如果它很大,可能需要很长时间。

+0

现货,谢谢。 – 2014-04-19 15:36:13

相关问题