Ruby 红宝石语法问题

Ruby 红宝石语法问题,ruby,activerecord,Ruby,Activerecord,我对ruby不熟悉。所以我被下面几行代码弄糊涂了: class CreateProducts < ActiveRecord::Migration def self.up create_table :products do |t| t.string :title t.text :description t.string :image_url t.decimal :price, :precision => 8, :scale =

我对ruby不熟悉。所以我被下面几行代码弄糊涂了:

class CreateProducts < ActiveRecord::Migration
  def self.up
    create_table :products do |t|
      t.string :title
      t.text :description
      t.string :image_url
      t.decimal :price, :precision => 8, :scale => 2

      t.timestamps
    end
  end

  def self.down
    drop_table :products
  end

end

我就是不明白。所以,你们中有谁能给我一些提示,让我知道为了理解这一行代码,我需要阅读ruby语法的哪一部分?提前感谢。

您将在


另外,这是拼写语法,但对于代码,我们通常使用“语法”一词:)

您将在


另外,这是拼写语法,但对于代码,我们通常使用“语法”一词:)

我在这里猜测一下,但作为探索的基础


:title是一个Ruby“符号”-基本上是一个提供更高效的类似字符串的常量的黑客-因此t.string:title有点像在更流行的OO语言中调用
t.string(“title”)
,并且考虑到您似乎要为数据库声明一个记录结构,我想说这是在添加一个名为“title with type”的字段“字符串”。

我在这里猜一点,但作为探索的基础

:title是一个Ruby“符号”-基本上是一个提供更高效的类似字符串的常量的黑客-因此t.string:title有点像在更流行的OO语言中调用
t.string(“title”)
,并且考虑到您似乎要为数据库声明一个记录结构,我认为这实际上是在添加一个名为“title with type”的字段字符串“

检查 此文件称为创建应用程序的后端 检查 此文件称为创建应用程序的后端
这只是普通的Ruby消息传递语法

t.string :title
意味着

  • 取消对块局部变量的引用
    t
  • 将消息
    :string
    发送到
    t
    引用的对象,并将文字符号
    :title
    作为唯一参数传递

  • 这只是普通的Ruby消息传递语法

    t.string :title
    
    意味着

  • 取消对块局部变量的引用
    t
  • 将消息
    :string
    发送到
    t
    引用的对象,并将文字符号
    :title
    作为唯一参数传递

  • 要完全理解该文件,您需要理解类、继承、模块、方法调用、块和符号。

    要完全理解该文件,您需要理解类、继承、模块、方法调用、块和符号。

    什么是()as方法调用与面向对象有关吗?
    :某物是一个符号,而不是一个不变的字符串,因此不等同于
    “某物”“
    。符号实际上是全局符号表上的一个索引,在比较和哈希键查找方面效率更高。@edgerunner:我忘记了Ruby特有的术语——自从我做Ruby已有几年了,但在一般的计算科学/对象级别上,我认为公平地说,它是一个不可变的字符串,您的回答似乎证实了这一点:没有?@Matt Briggs:
    ()
    单独与OO无关,但一般语法
    object.member-function()
    与OO无关。。。像C这样的过程语言不使用这种表示法。@Tony,据我所知,该字符串是散列的,生成的整数存储在表中()作为方法调用与面向对象有什么关系?
    :有些东西是符号,而不是不可变的字符串,因此不等同于
    “某物”
    。符号实际上是全局符号表上的一个索引,在比较和哈希键查找方面效率更高。@edgerunner:我忘记了Ruby特有的术语——自从我做Ruby已有几年了,但在一般的计算科学/对象级别上,我认为公平地说,它是一个不可变的字符串,您的回答似乎证实了这一点:没有?@Matt Briggs:
    ()
    单独与OO无关,但一般语法
    object.member-function()
    与OO无关。。。像C这样的过程语言不使用这种表示法。@Tony,据我所知,字符串是散列的,得到的整数存储在表中