2011-11-15 77 views
3

In a question I've previously answered,我用了一個協會擴展到覆蓋一個HABTM收集的append(<<)方法(同樣,a similar question):Rails的協會擴展:重寫HABTM分配(集合=)方法

has_and_belongs_to_many(:countries) do 
    def <<(country) 
    if [*country].all? {|c| c.is_a?(String) } 
     countries = Country.where(:code => country) 
     concat(*countries) 
    else 
     concat(country) 
    end 
    end 
end 

這可能不是鼓勵,但我的問題是,如何甚至有可能覆蓋賦值運算符,所以我可以做countries = ['IL', 'US']具有相同的結果?

+0

你能解釋一下嗎?我真的不知道你想做什麼 – basgys

+0

這個想法是有一個集合關係,我可以分配一個對象數組([obj1,obj2,...])和一個對象鍵數組'[key1,key2,...]')。 – GeReV

回答

0

我認爲它可能是這樣的:

def =(countries) 
    values = countries.kind_of?(Hash) ? countries.values : countries 
    values.each do |country| 
    self << country 
    end 
end 

我不知道是否可以使用運營商< <的方式。