Во-первых, не добавляйте явно ".rb" в оператор require.Вы бы просто использовали require 'session'
как обычно.Во-вторых, Rails загрузит его для вас, когда вы ссылаетесь на Session
, поэтому вам не нужно явно указывать это.Также, client ? cookies[:user_id] = client.id
является недействительным кодом Ruby.Возможно, вы захотите cookies[:user_id] = client.id if client
.
Очевидным решением было бы просто передать объект cookies
в Session
, который вы создаете, но я бы порекомендовал просто поместить код в контроллер.Почему у вас Session
объект в первую очередь?Я бы порекомендовал не усложнять вещи, создав ненужный класс.
Обновление:
Чтобы проиллюстрировать мой последний комментарий, вот пример кода:
class Session
attr_reader :controller
def initialize(controller)
@controller = controller
end
def client
if controller.cookies[:user_id]
return Client.find_by_id(controller.cookies[:user_id])
elsif (email = controller.params[:email]) && (password = controller.params[:password])
client = Client.find_by_email_and_password(email, password)
controller.cookies[:user_id] = client.id if client
return client
end
end
end