2012年11月8日 星期四

[宅] 宅男臥軌日記(9) - Filters in controller

好像在前面的筆記裡有提到before_filter,但是沒有特別深入研究,拜讀了ihower大大的部落格並上網查了一下相關文章以後,在這裡做一個筆記整理。


filters

在Rails中,我們可以定義method在進入action之前、之中、之後進行,分別使用before_filter、after_filter和around_filter來實做。其中最常見的應該就是用before_filter來做權限驗證了:
before_filter :authenticate
上面的例子中接在before_filter後的是一個symbol,代表著要呼叫哪個method
before_filter最主要的功能還是在跨action的共用參數傳遞,在前面關於layout & style的文章中就有呼叫method,然後method回傳一個instance varible的例子。

在ihower大大的部落格中有提到,除了method以外,還能傳入code block以及物件。若傳入的是物件,Rails就會執行物件中的filter方法。

那code block呢?


在filter中傳入參數

前面有提到要在filter傳入method,要用symbol來指定method的名稱,但是我們沒辦法在symbol中加入參數("before_filter authenticate(arg)"明顯是個錯誤的寫法Orz),所以要傳入參數就要用以下兩個方法了:

1. code block

before_filter do |c|
c.send(:authorize, args)
end

before_filter :only => :show do |controller|
  controller.instance_eval do
    authorize(args)
  end
end

以上兩個方法我也還沒驗證過,改天來試試看XD


2. inline procs

這種方法最直覺,不過我一樣還沒驗證過能不能用XD
before_filter {authorize(args)}





[觀察] "我可是優秀的大學生耶,怎麼可以漲我學費呢!?"




http://ppt.cc/gtNF
看了PTT上的這篇文章,我有很多話想說。
文中的大意是一個年輕人家境不好,老爸當別人的保人欠了600多萬,但是他也是一路半工半讀到了大二,重點是:"沒有學貸"

高等教育=社會福利?

首先,這是一個本來就應該被矯正的觀念,誰說年輕人一定要讀大學?如果說讀完大學是能及時投入戰力的,那我舉雙手贊成,多繳一點稅給你們讀都無妨。但是怎麼常常聽到大學生說"以後要幹嘛?不知道耶"或是"同學都讀研究所,那我就跟著讀啦"
當了太久的既得利益者,到大家發現資源分配不均以後,試圖矯正這個情況,大家就開始哇哇叫了....

讀大學好辛苦喔~每天讀書都讀不完了哭哭~ ^.<

摸著良心說,哪個學生沒有翹課過?更別提打混了。
如果你是真的很有心,認真的吸收每一分教育資源,即使在家境不好的狀況下也能自己打工堅持下去,那我覺得這樣的人到哪裡都能成功。
但是偏偏就有人是這樣:
(截圖自:http://goo.gl/jKHNL)

一個從高中開始貸款到大學畢業背了60萬的人,平均每年將近10萬。
那你等於是沒有試著還過嘛~每個月去超商打個工存個1萬元,扣掉生活費或多或少多少也能負擔一點了。
說到這裡,這個人究竟是真的認真讀書到沒有時間打工,還是覺得"反正學貸不用利息,不借白不借,晚點還沒差"?
我也剛脫離學生身分不久,知道當學生有多幸福,也知道大部分的學生過的是怎樣的日子。有些同學家境比較好,不用打工,零用錢可以爽爽花,但不代表家境不好的學生就得依樣畫葫蘆,跟風買什麼智慧型手機。要比手機名牌,為什麼不順便比一下人家的有錢老爸?有那個屁股才能拉那個屎,沒那個屁股請你乖乖去打工。

媒體已經很白癡了,拜託不要一起起舞

我這樣說不是要一竿子打翻一艘船,其實這樣的米蟲學生只是佔很少數。我雖然在學生階段也算是個米蟲,但好歹我也有在打工,也知道我享用了很多資源,不應該得了便宜還賣乖。但是越是米蟲的米蟲越會在媒體上大吐苦水,炒作群眾的情緒。
從前的大學生,是扮演著社會的先知先覺者,是推動革命、是推動社會運動的種子、是社會正義的捍衛者。當現在的大學生,享用著少少付出換回的高等教育資源時,還像個小孩子一樣的抱怨,我只覺得"又有一份教育資源被浪費了"


"什麼東西?
他們可是大~~~學生喔!"