我知道这听起来像一个荒谬的问题,但我试图解决潜在雇主给出的挑战。我有一个架构和几个模型及其方法。几乎所有的方法都没有传入任何变量。意思是没有一个方法看起来像这样:
def this_is_my_method(variable)
#stuff
end
或
def this_is_my_method variable
#stuff
end
但是有一些方法可以清楚地使用这样的变量:
def build_address
if variable
# do something
end
end
在某些情况下,模型方法是否会知道某些参数或变量的RoR方式?
所以,如果我的控制器正在接收看起来像这样的params:
?my_method[begin]=1&my_method[end]=5
是模型方法" my_method"知道什么"开始"和"结束"在哪里?
def my_method
if self.begin == self.end
# do something
else
# do something else
end
end
答案 0 :(得分:0)
请记住,模型方法可以访问该模型实例的所有属性(和其他方法)。
所以(例如)这将是一个有效的模型方法。
class User < ActiveRecord::Base
def full_name
[first_name, last_name].join(' ')
end
end
这是一个属性user.first_name
和一个属性user.last_name
,并将它们组合起来创建一个新方法user.full_name
编辑为@Sanket建议您可以将值传递给模型,如果您将它们设置为属性访问者...
def SomeController < ApplicationController
def some_controller_method
@user = User.find(params[:id])
@user.begin = params[:begin]
@user.end = params[:end]
@user.some_model_method
end
end
def User < ActiveRecord::Base
attr_accessor :begin, :end
def some_model_method
if self.begin == self.end
# do something
else
# do something else
end
end
end
虽然坦率地说,我宁愿只将值作为方法参数传递。