Pessoal, dúvida básica:
Estudando Ruby on Rails me deparei com o seguinte código:
class CreateContexts < ActiveRecord::Migration
def self.up
create_table :contexts do
|t|t.column :name, :string
end
end
def self.down
drop_table :contexts
end
end
sei que o “<” representa a herança da classe ActiveRecord, mas e os dois pontos do Migration? O que representam?
Obrigado
Um símbolo (Symbol) se parece com um nome de variável mas é prefixado com dois pontos (:). Exemplos: :action, :line_items. Você não precisa pré-declarar um símbolo e garante-se que eles sejam únicos. A linguagem também garante que não importa onde apareça em seu programa, um símbolo particular terá sempre o mesmo valor.
Ou seja é apenas algo que a linguagem Ruby disponibiliza e que é bastante comum de se ver nos projetos RoR.
1 curtida
No caso os dois pontos juntos (quatro pontos) representa um Symbol também?
Valeu pela resposta @Leonardo_Brito
Renan, esse é o constant lookup, ou seja é utilizado para buscar por constantes.
Em ruby nomes de classes devem ser constantes(iniciar com letra maiúscula).
No seu exemplo esse token foi usado para buscar pela constante Migration dentro do módulo ActiveRecord.
module ActiveRecord
class Migration
end
end
Caso você defina uma constante em uma classe ou em um módulo o acesso externo deve ser da mesma forma:
class CustomClass
MY_CONSTANT = 'xxx'
end
CustomClass::MY_CONSTANT
Na documentação você também pode encontrar esse token sendo utilizado para sinalizar que um trata-se de um método de classe ou uma constante.
Ex.: Documentação da classe Array
::[]
::new
#push
1 curtida
Agora entendi @alessandro.asac, muito obrigado pela resposta!
Code safe,
Abraço
Serve para acessar uma constante que está dentro de uma classe;
Exemplo: Tenho uma constante chamada OLA dentro da classe Teste e acesso ela com ::
class Teste
OLA = "oi"
end
puts Teste::OLA