2012-10-24 44 views
-1

根据推荐建议更新此帖子: Rails中不一致的命名约定令我困惑不解。这似乎是语法是遍布在Rails的地方......不理解变量声明,符号,方法,实例变量,类变量之间的差异

下面是一些例子:

为何会出现在下面的迁移逗号?为什么关键字“默认”没有在它之前冒号?什么是默认关键字?的方法,或变量,符号..那是什么混账东西??:

add_column :zombies, :rotting, :boolean, default: false 

下面是另一个例子:

为什么没有年龄:年龄(带冒号)?为什么make_rotting被称为“”之前?

class Zombie < ActiveRecord::Base 
     before_save :make_rotting 

    def make_rotting 
     if age > 20 
     self.rotting = true 
     end 
    end 
end 

我是一个Java的家伙,是Java是冗长,但在-至少其一贯的,我觉得好像回到:(

+9

你应该读一本书的Ruby /教程。在* Rails之前学习Ruby *的基础是很重要的。 –

+1

[Andrew's](http://stackoverflow.com/users/211563/andrew-marshall)建议是很好的,但如果你用一些具体的例子更新这个问题,人们可能会提供更多的帮助。 – mikej

+0

我已经用具体的例子更新了这个问题。它看起来像rails语法遍布全球。我不知道我什么时候调用某个方法或引用一个符号或某个属性。我得到实例变量synatx,这很容易。但所有这些冒号和非冒号不一致是令人难以置信的......帮助 – user836087

回答

0

首先的有不同类型的变量:

1.本地变量

foobar 

2.Instance变量

@foobar 

3.Class变量

@@foobar 

4.Global变量

$foobar 

您可以在它们之间通过的方式,他们根本区别被使用。

现在如果要讲一个模型的属性,可以声明为

property :foobar, :type => FIXNUM 

现在validatevalidates都是不同

validates :foobar ,:numerically => {:greater_than_or_equal_to => 0} 

其中validates是使用验证属性。

validate :method_name 

其中validate是验证一些方法

1

Ruby和Rails可以在开始的时候我很同意混乱。

我想你会得到更好的答案,如果你提供的代码示例。因为你是一个初学者,你可能会被误解为一个键/符号variable一种方法或:value

有一件事我可以帮你,虽然:

variable: :value实际上是

key: :value(其中:value是一个符号)

Ruby的新的哈希语法这曾经是:

:key => :value

+2

实际上,同义词应该是':key =>:value'。 – Dmitry