2013-05-29 42 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

我更新了方法名称,不确定是否更好地创建另一个“可见”或“不可见”方法。 –

相关问题