Вы можете думать, что это похоже на написание вашей миграции следующим образом:
t = TableCreator.new
t.table_name = 'products'
t.string 'name'
t.save
Метод create_table
был определен примерно так в миграторе Rails:
def create_table(name)
creator = TableCreator.new(db_connection: current_connection)
creator.table_name = name
yield creator # this is the line that creates the |t| in your question
t.save
end
Это позволяет вашей миграции выглядеть так:
create_table :products do |t|
t.string :name
end
Что гораздо приятнее и проще для вас писать, так как вам не нужно, например, вызывать .save
самостоятельно.
Называть это t
полностью зависит от вас, это просто местное имя.С таким же успехом вы могли бы написать:
create_table :products do |table|
table.string :name
end
Мнение: Это очень простой "Hello World!"уровня Ruby, и вы, возможно, захотите изучить некоторые основы языка, прежде чем углубляться во что-то такое сложное, как Rails.