在我的一个模型中,我有这样的代码:
def lendable_category=(i)
set_category(i)
end
def free_category=(i)
set_category(i)
end
def skill_category=(i)
set_category(i)
end
这些方法是我添加的虚拟参数,因此我可以使用 params 散列保存对象,而无需在控制器中强制散列。
同样的事情说三遍感觉不太好。有没有更好的方法来创建这样的相同方法?
在我的一个模型中,我有这样的代码:
def lendable_category=(i)
set_category(i)
end
def free_category=(i)
set_category(i)
end
def skill_category=(i)
set_category(i)
end
这些方法是我添加的虚拟参数,因此我可以使用 params 散列保存对象,而无需在控制器中强制散列。
同样的事情说三遍感觉不太好。有没有更好的方法来创建这样的相同方法?
%w(lendable free skill).each do |name|
define_method "#{name}_category" do |i|
set_category(i)
end
end
或者,由于您的方法除了调用之外没有做任何事情set_category
,您可以通过给方法起别名来节省几行:
%w(lendable free skill).each do |name|
alias_method "#{name}_category=", :set_category
end
您可以使用以下alias
关键字:
alias lendable_category= set_category
alias free_category= set_category
alias skill_category= set_category