Играть!проблема с @Before, чертами и Squeryl, бросающими закрытые соединения? - PullRequest
1 голос
/ 02 марта 2012

Обновленный вопрос После некоторой дальнейшей отладки я обновил этот вопрос, чтобы быть более точным в реальной проблеме.

У меня есть черта, которую я определил для базовой проверки безопасностино каждый раз, когда я хочу выполнить запрос к БД, выдается ошибка Cannot operate on a closed connection!!!.

Код ниже:

trait SecureAPI {
  self:Controller =>

  @Before
  def checkKey(key:String)
    models.Account.getByKey(key) match {
      case account:Account  =>  {
        renderArgs += "account" -> accountId
        Continue
      }
      case _  =>  Forbidden("Key is not authorized.")
    }
}

getByKey выдает ошибку БД.В моих контроллерах я добавляю Squeryl в качестве признака, но как бы я применил это к другому признаку, чтобы я мог продолжать выполнять запросы?Или я просто не подхожу к этому должным образом?Спасибо.

1 Ответ

2 голосов
/ 02 марта 2012

Я стал глубже разбираться в различных чтениях, и в этом сообщении говорится здесь: http://www.alvarocarrasco.com/2010/12/i-have-settled-on-new-platform-for.html

Мне пришлось использовать Squeryl, чтобы связать сеанс с текущим потоком.Поэтому, чтобы заставить работать приведенный выше код, мне пришлось добавить в SessionFactory

@Before
def checkKey(key:String)
  SessionFactory.newSession.bindToCurrentThread // added this here
  models.Account....

Все, что теперь запрашивает, просто нужно решить несколько ошибок.Я обновлю ответ, если обнаружу больше предостережений.

...