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";
以外的所有内容
答案 0 :(得分:8)
你需要说“用户”。所以Ruby知道你的意思是调用user实例的属性赋值方法。否则,您只需设置名为“hashed_password”等的局部变量
>> 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
当某些东西不起作用时,您可以使用一条规则:始终将其简化为最简单的情况。