Могу ли я использовать Struct.new в качестве модели Rails? Или: Как создать анонимные структурированные сессии без поддержки БД? - PullRequest
1 голос
/ 29 ноября 2009

Учитывая следующий пример:

class AnonymousSession << Struct.new(:location, :preferences)
  def valid?
    ...
  end
  def new_record?
    ...
  end
end

Хотя этого интерфейса достаточно для создания изощренной формы и т. Д., Он завершается ошибкой, как только я хочу сохранить данные формы в сеансе:

if session[:user] = AnonymousSession.create(params[:anonymous_session])
  #--> fails with "unknown key(s): location..."
  ...
end

Сообщение об ошибке о «неизвестных ключах». Любая подсказка, как заставить это работать? Мне просто нужны анонимные сессии без базы данных. Они полностью одноразовые благодаря своей короткой живой природе.

Может быть, мой подход в любом случае неверен, и уже есть элегантное решение для использования анонимных сессий? Я взглянул на AuthLogic, но любой найденный мной пример всегда идет с моделью ActiveRecord (и, следовательно, привязан к базе данных).

Ответы [ 3 ]

1 голос
/ 01 декабря 2009

У Райана Бейтса есть пара эпизодов Railscast, которые могут вам помочь: Модель на основе сеанса и Супер простая аутентификация .

1 голос
/ 29 ноября 2009

Я использовал это решение, в котором моя модель основана на Tableless. Я думаю, что это будет работать и в вашем случае.

0 голосов
/ 30 ноября 2009

Вы должны были бы объяснить больше о том, что вы пытаетесь достичь. Почему вы не можете просто создать класс AnonymousSession в / app / models?

class AnonymousSession

  attr_accessor :location, :preferences

  def new_record?
   # ...
  end

  def valid?
   # ...
  end

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...