Рубиновый грамматический вопрос - PullRequest
0 голосов
/ 24 ноября 2010

Я новичок в рубине. Поэтому меня смущают следующие строки кода:

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

одна из строк меня больше всего смущает:

t.string :title

Я просто не могу этого понять. Так может ли кто-нибудь из вас подсказать, какую часть грамматики ruby ​​мне нужно прочитать, чтобы понять эту единственную строку кода? заранее спасибо.

Ответы [ 5 ]

3 голосов
/ 24 ноября 2010

Это обычный синтаксис сообщений Ruby.

t.string :title

означает

  1. разыменование локальной переменной блока t
  2. отправьте сообщение :string объекту, на который ссылается t, и передайте буквальный символ :title в качестве единственного аргумента
1 голос
/ 24 ноября 2010

Я предполагаю, что здесь немного, но в качестве основы для исследования

: title - это "Ruby" -символ "Ruby" - по сути, хак для обеспечения более эффективных строковых констант - так что t.string:title немного похож на вызов t.string("title") в более популярных языках OO, и, учитывая, что вы, кажется, объявляете структуру записи для базы данных, я бы сказал, что добавляется поле, эффективно называемое «title» с типом «string».

0 голосов
/ 24 ноября 2010

чтобы полностью понять этот файл, вам нужно понимать классы, наследование, модули, вызовы методов, блоки и символы.

0 голосов
/ 24 ноября 2010

Проверьте это может оказаться очень полезным Этот файл называется файл миграции , он создает бэкэнд для вашего приложения Другая ссылка

0 голосов
/ 24 ноября 2010

Вы найдете ответ в Почему острое руководство по Ruby

P.S. Это пишется грамматика, но для кода мы обычно используем слово «синтаксис». :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...