【问题标题】:simple method in User model - trying to call it in console用户模型中的简单方法 - 尝试在控制台中调用它
【发布时间】:2014-02-13 05:32:51
【问题描述】:

好的,简单的问题。

在用户模型中有这个方法:

def name_email
   "#{first_name} #{last_name} - #{email}"
 end

好吧,由于它没有self附加到方法,我们可以推断它是一个实例方法,对吧?

所以,我打开控制台,尝试像这样初始化它:

 LaLaLa = User.new

然后我尝试通过像这样设置名字来设置这个方法:

Jesse = LaLaLa.first_name

这让我明白了:

=> nil

然后我尝试设置姓氏:

Smith = LaLaLa.last_name

这又让我明白了:

=> nil

然后我尝试设置电子邮件:

FakeEmail = LaLaLa.email 

这让我明白了:

=> ""

然后我尝试通过调用这样的方法来获取名字、姓氏和电子邮件:

LaLaLa.name_email

这让我明白了:

=> "  - "

这让我想到了我的问题,为什么这在控制台中不起作用?我在这里做错了什么?

我的意思是,如您所见,我设置了名字、姓氏和电子邮件。

为什么方法不显示结果?

如果这个问题可以更好地表达,请告诉我。

【问题讨论】:

  • @Santosh,刚才跑了reload!,然后又跑了LaLaLa.name_email方法,控制台还是一样的结果
  • 您显然在 ruby​​ 基础知识方面苦苦挣扎:只需半小时 tryruby.org 就可以让您通过示例学习这些内容。

标签: ruby-on-rails ruby rails-models rails-console


【解决方案1】:

你看到你写的东西了吗?

你得到 nil 是因为你给一个未设置的变量一个 nil 值......

Jesse 是一个未设置的变量,您在 LaLaLa.first_name...处为其赋予值...

你应该这样做

LaLaLa.first_name = "Jesse"

等等……

最后

LaLaLa.save

注意:在 ruby​​ 中,通常的做法是使用第一个字母非大写的实例变量名称。大写的第一个字母表示类...所以,正确地说,这样做:

lalala=User.new

【讨论】:

  • 感谢您的回答并添加了一些额外的解释。非常感谢。
【解决方案2】:

你应该这样设置名字

LaLaLa.first_name = 'Jesse'
LaLaLa.last_name = 'Smith'
LaLaLa.email = 'FakeEmail'

【讨论】:

  • 接受,因为这是第一个答案。顺便谢谢你。
猜你喜欢
  • 2020-09-29
  • 2011-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 2016-10-16
  • 1970-01-01
相关资源
最近更新 更多