Rails 的 Many-to-Many 討論

Rails 的 ActiveRecord:Associations 讓你建立資料表之間的關係,其中一對一跟一對多關係都還算簡單,多對多比較複雜一點。Rails 有兩個方法可以做到,has_and_belongs_to_manyhas_many :through。後者是 Rails 1.1 才有的,所以 Agile Web Development with Rails 一書並沒有提到。

我的頭一個問題是,這兩個有什麼差別,應該用哪一個?? 找了一下有發現有 habtm vs has_many :through 這篇跟 Many-to-many Dance-off!。Dance-Off 那篇很仔細的比較兩者的差異,也給了一個範例,值得一看。

主要來說 has_and_belongs_to_many 比較簡單,但是那個 join table 不適合再加欄位值,比如說該關聯建立的時間之類的,雖然 push_with_attributes 這個方法可以塞資料進去,但是卻是很亂的糟方式,已經不被推薦使用。

而 has_many :through 功夫多一些,結構更完整,用新增一個 join model 的方式來建立關聯資料。自己有一個 model class,因此使用上也比較豐富。就像一般 model 一樣,先 new 一個出來,assign 好那兩個關聯物件,再填好其它資料,最後 save 即可。

Rails 的 Migrations

Migrations 讓你用 Ruby 語法來定義資料庫結構。這有什麼好處? 這可以讓資料庫結構也可以像 code 一樣做版本控制,多人開發時可以更容易更新資料庫版本,產品更容易升級,不同資料庫也更容易做同步。這些都只要打 rake migrate 就可以完成。

參考資料 :

簡易範例 : 閱讀全文〈Rails 的 Migrations〉

Rails Recipes 到手

花了近一個月的時候,把 Agile Web Development with Rails 一書看完,接著天瓏就進了這本書 Rails Recipes。剛好可以接著看,呵。這本真是 Rails 那本的絕配,因為Rails那本的實例較少,很多東西還是不知道怎麼弄出來。Rails Recipes 列了70個問題來一一解答,是本實用的食譜書。

題外話,Agile Web Development with Rails 十月要出第二版了,真是期待。新書應該是要追上1.1的腳步,看起來 Rails 1.1 修改了不少,像是 DB migration、Many-to-Many 的 has_many :through、Polymorphic associations 等,還有 RJS Templates,每個功能都快讓我流口水了說。

這下半年會好好研究 Ruby on Rails 跟 Ruby,and 寫點東西在 Blog 上充充版面。

大前研一 OFF學 3~5章

第三章 出去旅行 

  • 透過網路觀光探索旅遊計畫
  • 為了避免追趕分秒必爭的旅遊行程,定點型旅遊計畫是不錯的選擇。
  • 禁止購買旅遊名產,節省旅遊時間跟金錢。
  • 避免休閒疲累的鐵則是,人多的地方不要去,在開放的空間享受。
  • 善用飛航里程數換取優惠。

第四章 休閒時間的IT活用術

  • 參與網路社群,結交興趣同好。需注意社群管理是否良好。
  • 透過醫療網站,掌握疾病資訊。尋求第二意見。身體不舒服一定要立刻休息。
  • 利用數位相機輕鬆拍攝更多聊天的話題,隨身攜帶,多按幾次快門。定期整理以記事本為感覺所拍攝的相片。
  • 在雨天的假日,利用電腦整理自己的歷史,整理自己各種不同的收藏品(資產)等。
  • 利用網路競標(拍賣網站)聰明購物

第五章 喝酒的場所與樂趣

  • 避免下班之後跟同事的喝酒溝通,這樣的聚會好像加班一樣,且破壞與家人相聚時間,加深疲累。可學習歐美的活力早餐或活力午餐的工作方式,一邊吃一邊有建設性的談話。
  • 要喝酒的話,跟工作以外的人開懷暢飲,才能紓解壓力。
  • 與其隨便地選擇餐廳,不如在家舒服地用餐。除了雜誌書跟網站,較準的情報來源是朋友推薦的餐廳,或是向熟識的餐廳老闆詢問。
  • 情報整理術 : 以價格別充實餐廳的情報,不一定要貴才好吃。
  • 餐廳的選擇方法 : 先從午餐味道下手,因為午餐費用較低。
  • 料理的選擇方法 : 詢問餐廳人員的推薦。
  • 用餐的次數是有限的,如果能夠珍惜每次用餐機會,盡量品嚐美味的料理,我們就會謹慎的選擇餐廳。
  • 擁有熟悉的餐廳,最好的優點就是方便。至少有兩家,一家離公司不要太遠,另一家在住家附近。是放鬆精神不可或缺的藏身之所。
  • (外籍的)女服務生,是情報的寶庫,多進行知性的談話。

第六章 家庭管理術、第七章 恍然大悟的育兒術、第八章 從現在起,為年老的生活做準備。最後這三章也有不少不錯的建議,不過暫時我還用不到囉,以後結婚有小孩了,值得再看。

大前研一 OFF學 1~2章

會玩,才會成功。大前研一是知名的管理學家,竟然出了本教你如何玩的書,非常有意思。創意經濟與製造經濟的最大差別,就在是否有生活的美學。會玩會休閒會生活的人,才能有源源不絕的創意跟活力,才能夠在工作上,有更好更持續的表現。

業精於勤,更精於嘻。這個玩,還不是隨便的,而是要有計畫有創意的積極投入。而不是漫無目的的打發時間跟昏睡,這樣只會帶來精神上更大的疲勞,也無法培養出積極向前的心情來面對工作。另外在序言中,作者特別提到這本書不是提倡慢活(slow life),要你放棄工作,不需競爭,輕鬆生活,畢竟現實中工作還是生活的一大重心,只要有充實的休閒生活,享受與家人朋友共同的快樂時光,就算工作目標未能如願,也可以說是一個美好的人生。 閱讀全文〈大前研一 OFF學 1~2章〉

看歌劇: 費加洛婚禮

7/7(五)去看了在新竹縣演藝廳,由簡文彬帶領的國家交響樂團NSO與賴聲川導演的莫札特歌劇 : 費加洛婚禮。 

時空背景被移到清末,衣服跟佈景充滿中國味。雖然有人覺得跟歌劇不搭,但我覺得也還算可以接受啦,也算有創意。字幕機太小是一個很大的問題,我記得以前是用大大的投影的說,感覺現場蠻多人看的霧煞煞。合唱團躲在後面的效果也不太好,可能是因為本來要唱歌的少女要跳舞不好唱歌吧。

歌劇剛開始的放唱盤的動作跟歌劇結束的收唱盤非常很有意思,令人會心一笑。照相時的閃光效果也不錯。另外就是有個bug,衣櫃的鎖竟然可以從裡面打開跟鎖上,跟字幕寫的劇情不合。

有幾場打拍掌的戲,一開始我沒聽懂,原來竟然是簡文彬自己用力拍手來做打音效的,真是超好笑的。每個詠嘆調唱完,觀眾也都不吝惜掌聲,這些聲樂家真的好厲害呀,將近3個半小時的演出,全程背唱原文詞,還要一邊演戲。

謝幕時,發現賴聲川也在,兩大巨頭一同謝幕。這麼多人一起演出這齣歌劇,實在令人感動啊。