Rails又寫了一段時日。愈來愈多的plugin與gem逼迫我開始脫離使用NetBeans。雖然NetBeans仍有辦法做到支援gem下的rake等工作,但中間花的代價感覺實在不值得、不如先罷手不用NetBeans、順便練習原始的指令法。
於是開始用起vim與gedit...後來發現有人寫過適合網頁編程人員用的gedit,改一改倒也能抵過不少NetBeans的重點功能(比如我很依賴的autocomplete)。今天又挖到一個更棒的東西,GMate。照作者的說法。這主要是參考Rails界有名的textmate(這支IDE的最佳代言人就是RailCasts站長Ryan)。包括縮排、render切割等Rails常用的手續都有做,對於使用Ubuntu的Railist如我真的是很棒的福音\OvO/
2010年8月10日 星期二
繼承,多型,多對多表單指定的用法
情境解題:
一個流程有三階段的作業單要填寫(Order , Buildup , Endup ),中間都會經過驗收簽名(Check_order , ect)。
驗收簽名的資料都相似,因此利用Model繼承讓他們住在同一個資料表(Checklist)。利用N:M的多對多接續(參照)。
Rails的多對多是利用欄位名默認對照,但現在子資料表己經變成多型,從上方的表單無法找到指定的驗收資料。一般教學不大常提到這點,昨天花了點時間才試出。
一個流程有三階段的作業單要填寫(Order , Buildup , Endup ),中間都會經過驗收簽名(Check_order , ect)。
驗收簽名的資料都相似,因此利用Model繼承讓他們住在同一個資料表(Checklist)。利用N:M的多對多接續(參照)。
Rails的多對多是利用欄位名默認對照,但現在子資料表己經變成多型,從上方的表單無法找到指定的驗收資料。一般教學不大常提到這點,昨天花了點時間才試出。
#最上頭的Model Order.rb
#has_one :check_list , :as => :table
#過去一般用到這行,指定checklist便可,但現在要做的是指定checklist下的check_order,直接用下方的指定便可
has_one :check_order , :as => :table , :conditions => ["type = ? " , 'CheckOrder']
#中間層的Checklist.rb
self.inheritance_column = :type #歸類三種子表格的欄位名
belongs_to :check_order
belongs_to :check_buildup
belongs_to :check_endup
belongs_to :table , :polymorphic => true
#最下層的check_order.rb Class名改掉繼承便可
class CheckOrder < CheckList
end
訂閱:
意見 (Atom)