Я пытаюсь выполнить определение до сохранения, как в моем файле Route.rb
. (@ Current_user.email вызывает ошибку)Как использовать переменную, объявленную в ## _ хелпер-файле?
class Route < ActiveRecord::Base
before_save { |route| route.created_by = @current_user.email }
end
Но я получаю эту ошибку,
undefined method `email' for nil:NilClass
Но я могу использовать это нормально в моем _header.html.erb
Как так:
<a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#">
<%= @current_user.email %>
<span class="caret"></span>
@current_user
описан в моем sessions_helper
следующим образом:
module SessionsHelper
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
current_user = user
end
def signed_in?
!current_user.nil?
end
def current_user=(user)
@current_user
end
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
def current_user?(user)
user == current_user
end
def sign_out
current_user = nil
cookies.delete(:remember_token)
end
end
Почему я не могу выполнить это before_save
, не получив эту ошибку? Спасибо, парни.
У вас возникают те же ошибки, если вы получаете доступ к '@ current_user' методом' current_user' ('self.created_by = current_user.email' без' @ ')? –
'неопределенная локальная переменная или метод' current_user 'для # <Маршрут: 0x007fc385eda0a8> ' – Datsik
Возможно, вы захотите попробовать этот камень? https://github.com/house9/clerk - автоматически устанавливает создателя и обновителя на моделях – house9