2013-05-29 58 views
0

在我的模型有幾個類似的命名方法來啓用/禁用某些功能,如:Rails,是否可以將控制器的參數傳遞給模型方法?

def invisible 
    self.update_attribute(:invisble, false) 
    end 

    def visible 
    self.update_attribute(:invisble, true) 
    end 

是否有可能重構這一個方法,並通過從控制器的參數?還是有更好的方法來處理這些問題。

回答

2

你可以做這樣的事情:

def set_visibility(param) 
    self.update_attribute(:invisible, param == "true") 
end 

在控制器:

@object.set_visibility(params[:visible]) 

那是你的意思?

+0

就是這樣,移動了默認行內的param == default – Rubytastic

+0

關於命名約定的一個想法。我們可以使用is_visible方法來檢查返回true或false(或更好地使用可見?)。 Shoulden't def visibility visibility改名爲def set_visibility?不知道命名約定,但感謝您的答案,將在10分鐘內接受 – Rubytastic

+0

我更新了方法名稱,不確定是否更好地創建另一個「可見」或「不可見」方法。 –

相關問題