Ruby on rails RubyonRails,从控制器中的模型调用函数
我的控制器中有以下方法:Ruby on rails RubyonRails,从控制器中的模型调用函数,ruby-on-rails,ruby,Ruby On Rails,Ruby,我的控制器中有以下方法: def create p_attr=params[:upload] p_attr[:upload] = params[:upload][:upload].first if params[:upload][:arraydb].class == Array @upload = Upload.new(p_attr) respond_to do |format| if @upload.save @arraydb.process_name
def create
p_attr=params[:upload]
p_attr[:upload] = params[:upload][:upload].first if params[:upload][:arraydb].class == Array
@upload = Upload.new(p_attr)
respond_to do |format|
if @upload.save
@arraydb.process_name
end
end
end
在模型中,我有另一种方法可以处理刚刚保存的上载:
def self.process_name
update_attributes(:user_id => current_user.id)
update_attributes(:defined => "no")
end
它给了我一个错误,即没有为上载定义方法进程名称
问题是什么?如何从控制器更新模型中刚保存的文件的属性?
提前感谢。它不是为类定义的,不是为实例定义的
你试图在一个实例上调用它。使其成为实例方法。它不是-它是为类定义的,不是为实例定义的
你试图在一个实例上调用它。使其成为一个实例方法。在Ruby中,在名称前面用self.
定义的方法是类方法。这意味着您只能在类本身上调用此类方法,而不能在其实例上调用
这意味着:
upload = Upload.new()
upload.process_name
导致错误
而:
Upload.process_name
将调用该方法
由于您真正想做的是在Upload
类的实例中调用process\u name
,因此可以通过从方法定义中删除self.
来更正代码,从而导致:
def process_name
update_attributes(:user_id => current_user.id)
update_attributes(:defined => "no")
end
在Ruby中,在名称前面用self.
定义的方法是类方法。这意味着您只能在类本身上调用此类方法,而不能在其实例上调用
这意味着:
upload = Upload.new()
upload.process_name
导致错误
而:
Upload.process_name
将调用该方法
由于您真正想做的是在Upload
类的实例中调用process\u name
,因此可以通过从方法定义中删除self.
来更正代码,从而导致:
def process_name
update_attributes(:user_id => current_user.id)
update_attributes(:defined => "no")
end