2014-04-25 92 views
0

我不理解的東西,我有一個模型在軌道有兩種方式分配標籤的職位,一個是通過一個數組,另一個是單數。這是爲什麼傳遞一個字符串而不是數組?

def tag_names=(names) 
    self.tags = names.map{ |name| Tag.where(name: name).first_or_create } 
    end 

    def tag_name=(tag_name) 
    single_tag = [tag_name] 
    tag_names = single_tag 
    end 

如果對這個職位模型,你撥打:@post.tag_name = ['asdsad', '12312312']你得到分配給後

兩個標籤。如果你這樣做:@post.tag_name = '23423423'你什麼也得不到,而測試失敗了,這樣做的原因是,如果你把puts names在上面的方法,隨之而來通過不是一個數組而是一個字符串,即使我做:

single_tag = [tag_name] 
    tag_names = single_tag 

我在做什麼錯?

回答

1

變化

def tag_name=(tag_name) 
    single_tag = [tag_name] 
    tag_names = single_tag 
    end 

def tag_name=(tag_name) 
    single_tag = [tag_name] 
    self.tag_names = single_tag ## Note self.tag_names 
    end 

目前tag_names被視爲本地變量,以便你的方法tag_name=是沒有得到調用。你需要爲setter方法指定一個明確的接收者。 self.tag_names = single_tag會調用tag_name=方法。

相關問題