From 11991320d2be396af4d5b81290f86f5a1fe62664 Mon Sep 17 00:00:00 2001 From: Wen-Tien Chang Date: Fri, 5 Feb 2010 16:53:52 +0800 Subject: [PATCH] fix foreign key should be ObjectID --- app/models/component.rb | 13 ++++++++++++- app/models/item.rb | 15 +++++---------- app/models/page.rb | 13 ++++++++++++- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/app/models/component.rb b/app/models/component.rb index d0ec3343..c74ea4c0 100644 --- a/app/models/component.rb +++ b/app/models/component.rb @@ -4,8 +4,19 @@ class Component < Item key :engine_name, String key :layout_name, String, :required => true - key :layout_id, String, :required => true + key :layout_id, ObjectId, :required => true belongs_to :layout + protected + + def setup_default_value + super + + if self.layout_name + self.layout_id = Layout.find_by_name( self.layout_name ).id + end + + end + end \ No newline at end of file diff --git a/app/models/item.rb b/app/models/item.rb index 472afd7d..a40c0358 100644 --- a/app/models/item.rb +++ b/app/models/item.rb @@ -7,7 +7,7 @@ class Item key :name, String, :required => true, :index => true key :parent_name, String, :index => true - key :parent_id, String, :index => true + key :parent_id, ObjectId, :index => true key_i18n :title, String, :required => true @@ -16,10 +16,10 @@ class Item validates_format_of :name, :with => /^[a-zA-Z-_]+$/ belongs_to :parent, :class_name => "Item", :foreign_key => :parent_id - many :children, :class_name => "Item", :foreign_key => :parent_id + many :children, :class_name => "Item", :foreign_key => :parent_id, :dependent => :destroy before_validation :setup_default_value - + def self.find_by_name(item_name) Item.find(:first, :conditions => { :name => item_name, :is_published => true }) end @@ -31,7 +31,7 @@ class Item end protected - + def setup_default_value if self.position.blank? max_page = Page.find(:last, :order => 'position') @@ -43,12 +43,7 @@ class Item self.parent_id = nil else self.parent_id = Item.find_by_name( self.parent_name ).id - end - - if self.layout_name - self.layout_id = Layout.find_by_name( self.layout_name ).id - end - + end end end \ No newline at end of file diff --git a/app/models/page.rb b/app/models/page.rb index 728cedbe..6ccb4244 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -4,8 +4,19 @@ class Page < Item key_i18n :content, String key :layout_name, String, :required => true - key :layout_id, String, :required => true + key :layout_id, ObjectId, :required => true belongs_to :layout + protected + + def setup_default_value + super + + if self.layout_name + self.layout_id = Layout.find_by_name( self.layout_name ).id + end + + end + end \ No newline at end of file