有時候會看到有兩個冒號寫法是什麼意思?
隨便打開你 Rails 專案裡的 model 檔案,它可能會長得像這樣:
class Post < ActiveRecord::Base
belongs_to :user
belongs_to :category
end
第一行後面那個 ActiveRecord::Base
裡面的 2 個冒號 ::
,各位知道是什麼意思嗎?
隨便打開你 Rails 專案裡的 model 檔案,它可能會長得像這樣:
class Post < ActiveRecord::Base
belongs_to :user
belongs_to :category
end
第一行後面那個 ActiveRecord::Base
裡面的 2 個冒號 ::
,各位知道是什麼意思嗎?
在網路上常看到一些介紹 Ruby 裡類別(class)跟模組(module)的差別,有人說他們兩個差別很大,是完全不同的東西。事實上,類別跟模組是很像的。可能很多人不知道,類別跟模組是有血緣關係的,如果你試著這樣做:
puts Class.superclass
你會得到 Module
這個類別。也就是說,在 Ruby 裡,「類別」其實就是「模組」的後代,類別根本就是繼承自模組來的。既然是同一個體系,自然沒有太多的差異。
大家在寫 Rails 專案的時候,一定都有用過 link_to
這個 view helper。問大家一個簡單的問題:
link_to '刪除', user, method: :delete, data: { confirm: 'sure?' }, class:'btn'
請問,上面這段範例中,link_to
方法共有幾個參數?
如果你的答案是 5 個,那你就需要繼續往下看了 :)
先說結論:
attr_accessor 會幫你在 Ruby 的類別裡產生一對 getter 以及 setter 方法。
不過我想這結論對新手來說有講跟沒講一樣,讓我們繼續往下看。
大概兩年前舉辦了一次「徵求 Ruby/Rails 有心人」活動,感謝大家不嫌棄,不過因為人數太多,最後變成了社群活動了 XD
最近再度因為手邊的 iOS 案件在持續增加中(同時也有 Rails 的專案同時在進行),與其要直接找現成的即戰力,不如趁這個機會自己從頭開始帶,雖然會比較辛苦、花時間,但一些開發的習慣可以從一開始就先養成好像也不錯,剛好順便練一下之前準備的 iOS/Swift 教材。
所以我又厚臉皮的想要來徵看看有沒有人願意來給我當學徒。
之前在 Public, Protected and Private Method in Ruby 這篇文章提到,在 Ruby 裡使用 private 方法的時候,不能明確的指出 receiver,以下面這段範例來說:
class Dog
def hello
self.gossip
end
private
def gossip
puts "don't tell anyone!"
end
end
snoopy = Dog.new
snoopy.hello # => NoMethodError
snoopy.gossip # => NoMethodError
在上面這段程式碼的第 13 行,因為它明確的指出 receiver(snoopy),所以執行這行程式碼會出現會出現 NoMethodError
的錯誤;而在第 3 行,即使 receiver 是 self
也一樣是不行的。
這是在 Ruby 裡面 private 方法的設計。
很榮幸有機會能受邀參加 Livehouse.in 舉辦的 Combo! 8 週連擊 活動,本次的講題是「Ruby 也可這樣寫」,主要是來聊聊一些 Ruby 有趣(或奇怪)的語法,以及可以用 Ruby 做些什麼事(without Rails)。
這並不是什麼新的主題,也不是很艱深的內容,只是發現最近在接手一些別人寫的 Ruby on Rails (以下簡稱 Rails)專案時發現,似乎不少人並不清楚 Ruby 一些特有的寫法,把 Ruby/Rails 當做 PHP 在寫,所以就想來試著介紹這個主題給大家,讓大家可以多認識一些 Ruby。
記得在去年年初的時候,因為自己想找幾個一起打拼的伙伴而發起了一個「有心人」的活動,感謝大家的捧場以及社群朋友們的支持,活動順利結束。
然後,一直掛在嘴邊說要辦的「第二梯次」,總因為手邊的雜務而擱置。雖然後來斷斷續續的也有在中研院的自由軟體工作坊開一些 Ruby 的入門課或是在社群活動的分享,但就似乎變成有空才能開。
現在,我們成立了一家叫做五倍學院的公司,在更多朋友的幫忙下,我們有更多的時間及資源可以來做推廣 Ruby 這件事了,畢竟推廣 Ruby 本來也是當初成立這家公司的最主要目的。
所以,在與夥伴們討論後,我們決定要來持續的無料推廣 Ruby,每個月固定至少會有個一天是 Ruby 推廣課程,希望可以讓更多人可以認識這個有趣可愛的程式語言。
歡迎大家都可以開開心心的來認識、學習這個有趣的程式語言 :)