Rails模型实例变量未在模型类

时间:2015-06-08 14:16:47

标签: java ruby-on-rails ruby

我刚用以下命令创建了一个模型

rails generate model temp name:string description:string

我打开temp.rb但它不包含任何成员声明。

我也对在ruby中使用实例变量的方式感到困惑。我看到很多代码片段,它只是在方法中使用@instance_var的实例变量。不是ruby中需要的实例变量声明吗?那样如果我有15个方法并且每个方法都设置了新的实例变量那么就没有一个位置可以找到所有的实例变量,就像我们在java中所说的那样我们声明所有变量通常在类的开头有范围(私有,受保护,公共等)这里是代码的例子

class Hello

  def initialize
    @instanceHello = "welcomeBack"
  end

  def printHello

    print @instanceHello
  end
end

1 个答案:

答案 0 :(得分:1)

对于模型,它不是class Hello;它应该是class Hello < ActiveRecord::Base。所以它继承了很多功能。

成员未在模型中定义,而是在迁移中定义,就像您rails generate model temp name:string description:string一样。如果您有一个名为temp的模型,那么数据库中应该有一个名为temps的表,该表实际上应该包含所有这些成员。

你问过关于Ruby中的实例变量的第二件事。是的,确实没有单一的地方可以累积实例变量;相反,它们分散在它们所属的不同方法中;我认为它增加了可读性。

就您的示例而言,您可以执行以下操作:

class Hello
  attr_accessor :instanceHello
  def initialize
    @instanceHello = "welcomeBack"
    # self.instanceHello also works here
  end

  def printHello
    p @instanceHello # print doesn't work in Ruby. p or puts does the job.
    # self.instanceHello also works here
  end
end