Rumah  >  Soal Jawab  >  teks badan

ruby-on-rails - ruby中do关键字的用法

class Books < ActiveRecord::Migration
  def self.up
     create_table :books do |t|
    t.column :title, :string, :limit => 32, :null => false
    t.column :price, :float
    t.column :subject_id, :integer
    t.column :description, :text
    t.column :created_at, :timestamp
     end
  end

  def self.down
    drop_table :books
  end
end
create_table :books do |t|

这一句 没有迭代操作 为什么会有 ruby do |t|这句呢 这里的 ruby do |t|到底是什么意思? 求高人解答

PHP中文网PHP中文网2761 hari yang lalu1062

membalas semua(3)saya akan balas

  • 伊谢尔伦

    伊谢尔伦2017-04-21 11:18:31

    create_table :books do |t|
    

    Bukan lelaran tetapi panggilan balik.

    Mengenai panggilan balik dalam Ruby:
    http://stackoverflow.com/questions/1677861/how-to-implement-a-callback-in-ruby

    Mengenai Migrasi Rel:
    http://guides.rubyonrails.org/migrations.html

    Jika anda telah melakukan Ajax dengan jQuery, anda sepatutnya mempunyai pengalaman yang serupa dengan ini:

    $.get("test.php", function(data){ alert("Data Loaded: " + data); 
    
    Nilai pulangan kaedah

    $.get() ialah badan respons test.php Parameter pertama ialah URL yang diminta, dan parameter kedua ialah fungsi panggil balik Fungsi ini menerima badan respons test.php sebagai nilai data parameter Dan dipaparkan melalui tetingkap pop timbul.

    Anda boleh memahami pernyataan Migrasi ini dengan cara ini.

    # 创建了一个名为books的表
    create_table :books do |t| # t是create_table方法的返回值
        t.column :title, :string, :limit => 32, :null => false # 创建一个列title,字符串,最大长度32,不为null
        t.column :price, :float # 创建一个列price,浮点型
        t.column :subject_id, :integer # 创建一个列subject_id,整形
        t.column :description, :text # 创建一个列description,文本
        t.column :created_at, :timestamp # 创建一个列created_at,时间戳
    end
    

    balas
    0
  • ringa_lee

    ringa_lee2017-04-21 11:18:31

    Di sini: /q/1010000000266437 Saya sudah kembali dan mengalihkannya ke sini semula.

    create_table :books do |t|
    

    do|x|...akhir tidak mempunyai makna istimewa, sama seperti {|x|}, ia hanya mewakili satu blok. Terdapat lelaran dalam kod ini, ia sebenarnya serupa dengan:

    File.open("xxx","xxx") do |f|
    f.write(...)
    end
    

    , sudah tentu ini juga sah:

    File.open("xxx","xxx") { |f|
      f.write(...)
    }
    

    Kemudian ia menjadi seperti di atas kerana kurungan boleh ditinggalkan.

    Untuk ruby ​​​​melaksanakan fungsi sedemikian, anda hanya perlu:

    class Somethings
    #...  
      def create_table(name)
        # 为创建这个表做一些准备……
        # ...
        yield @table
        # 创建这个表
        # ...
      end
    end
    

    Untuk penggunaan iterator yang lebih khusus, anda boleh membaca ini: http://blog.csdn.net/classwang/article/details/4692856

    balas
    0
  • 大家讲道理

    大家讲道理2017-04-21 11:18:31

    do ... end adalah bersamaan dengan { ... }, iaitu kaedah Ruby boleh menerima parameter blok

    balas
    0
  • Batalbalas