2012-10-24 43 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