2011-09-28 77 views
2

我有一組與arc_id(object_id)和arc_type(object_type)的global_identificiation表有關係的位置(即複合外鍵鍵)。我將如何建立關聯,以便在每個位置查找中全面加載此全局信息?這樣的:在Rails 3/ActiveRecord中建模的正確方法 - 複合外鍵

@l=Location.find(23) 

@l['id']=23 
@l['name']='some place' 
@l['global_info']['id']=145 
@l['global_info']['arc_id']=23 
@l['global_info']['arc_type']='Location' 

眼下,爲省電,我只是做了一個after_save的回調是如何進入數據庫,但沒有任何其他公會吧。

THX任何幫助

編輯:
或許這可能僅僅是做作爲需要它的階級的after_find?

回答

0

要麼使用after_find,要麼只是在您的模型中創建一個方法來調用,然後只是將數據作爲參數傳遞。或者更好的做一個模塊,你所有的基於位置的類都可以包含,然後這個模塊可以定義各種基於位置的方法。

module Locations 
    def find_with_data(id) 
     x = Location.find(id) 
     x['id']=id 
     x['name']='some place' #you could pass this in params 
     x 
    end 
    end 

class Location < ActiveRecord::Base 
    include Locations 
end 

然後調用

new_loc = Location.new 
new_loc.find_with_data(35)