分号作为Rails控制台中的语句分隔符

时间:2009-05-30 19:51:50

标签: ruby-on-rails console

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

>> 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 = "John@coltrane.com"; display_name = "Johndispay"; user_level = 9; 
user.username = "John"; hashed_password = "John"; first_name = "John"; last_name = "coltrane"; email = "John@coltrane.com"; display_name = "Johndispay"; user_level = 9; 

?> user.save
user.save

=> true

忽略user.username = "John";以外的所有内容

3 个答案:

答案 0 :(得分:8)

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

>> user.username = "John"; user.hashed_password = "John"; user.first_name = "John"; user.last_name = "coltrane"; user.email = "John@coltrane.com"; user.display_name = "Johndispay"; user.user_level = 9; 

虽然,您可以只传递要在新实例上设置的属性的哈希值,如此

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

答案 1 :(得分:4)

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

有时如果我正在调用的方法将返回一个大数组,我会做这样的事情......

a = Account.entries; a.size

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

答案 2 :(得分:1)

你确定你不是故意的吗

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

我试过

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

>> a
=> 1

>> b
=> 2

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