我有模型用戶,我想在模型中創建一些方法,在助手中調用此方法,在控制器列表示例,並調用此助手在視圖中,但有錯誤,不知道如何正確寫入Rails自定義模型方法
我的模型用戶和我的方法
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幫手幫手
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
但我想在模型中創建方法,可能會更復雜,如何做正確的方法?
我向方法和這項工作添加變量,但我有問題 - 這是正確的方式? –
是的,current_user只存在於會話中。這意味着你只能在視圖或控制器上調用它 –