我有模型用户,我想在模型中创建一些方法,在helper中调用此方法,在控制器列表示例中并在视图中调用此帮助程序,但是有错误并且不知道如何正确写入
我的模型用户和我的方法
def include_current_user
User.where.not(id: current_user.id)
end
我的控制器列表和助手
def shared_users
@users ||= User.include_current_user
end
helper_method :shared_users
和我在哪里调用助手
<%= f.collection_check_boxes(:users, shared_users, :id, :email)%>
发生错误
undefined method `include_current_user' for #<Class:0x007f389c649f98>
Did you mean? included_modules
当我把我的方法移到自己的位置时 像这样:
class << self
def include_current_user
where.not(id: current_user.id)
end
end
有错误
undefined local variable or method `current_user' for #<Class:0x007f38ac5d98c8>
Did you mean? current_scope
当前用户这是ssesion helper中的帮手
def current_user
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
elsif (user_id = cookies.signed[:user_id])
user = User.find_by(id: user_id)
if user && user.authenticated?(cookies[:remember_token])
log_in user
@current_user = user
end
end
end
可能nned为我的方法include_current_user
添加变量并获取
像这样的行动电话
def shared_users
@users ||= User.include_current_user(current_user)
end
和模型中的方法
class << self
def include_current_user(user)
where.not(id: user.id)
end
end
在操作中创建一些查询时一切都很好,比如这个
def shared_users
@users ||= User.where.not(id: current_user.id)
end
helper_method :shared_users
但我想在模型中创建方法,mayde更复杂,怎么做正确的方法?
答案 0 :(得分:2)
将方法!foldernum!
更改为类方法
current_user模型上不存在
型号:
@Echo off
If "%1"=="" (
Echo Usage: %0 '^<base folder^>'
Exit /b
)
SetLocal EnableDelayedExpansion
Rem Get number of files in the folder
For /f %%A in ('dir %1 ^| find "File(s)"') do set totalfiles=%%A
Rem Set your parameters here
Rem First part of your folder name
Set folderprefix=m_
Rem m_1 ... m_8 => 8 folders
Set totalfolder=8
Set /a files_per_folder=totalfiles/totalfolder
Set filenum=1
Set foldernum=1
For %%f in (%1\*) do (
Move "%%f" "%folderprefix%!foldernum!\"
Rem Move to next folder by increasing folder number "
If !filenum! EQU %files_per_folder% (
If !foldernum! LSS %totalfolder% (
Set /a foldernum+=1
Set filenum=0
)
)
Set /a filenum+=1
)
控制器:
include_current_user
答案 1 :(得分:0)
include_current_user
不是类方法。因此,如果不引用User
类的对象,则无法调用它。尝试将include_current_user
定义为self.include_current_user
。这将使它成为一种类方法。然后,您就可以将其称为User.include_current_user
。