Haskell - Не удалось сопоставить тип "PersistEntityBackend record0" с "SqlBackend"
Я пытаюсь получить запись по id в Yesod. Мой код:
getEditActorR :: Handler Html
getEditActorR = do
actorId <- runInputGet $ ireq intField "id"
actor <- runDB $ get $ Key $ PersistInt64 (fromIntegral actorId)
defaultLayout $ do
$(widgetFile "actor-edit")
Я получаю ошибку:
• Couldn't match type ‘PersistEntityBackend record0’
with ‘SqlBackend’
arising from a use of ‘get’
The type variable ‘record0’ is ambiguous
• In the second argument of ‘($)’, namely
‘get $ Key $ PersistInt64 (fromIntegral actorId)’
In a stmt of a 'do' block:
actor <- runDB $ get $ Key $ PersistInt64 (fromIntegral actorId)
In the expression:
do { actorId <- runInputGet $ ireq intField "id";
actor <- runDB $ get $ Key $ PersistInt64 (fromIntegral actorId);
defaultLayout $ do { (do { ... }) } }
Как я могу это исправить?
1 ответ
Решение
Первое, что я сделал, это побежал stack ghci
,
Тогда я бегу :info Actor
где Actor - это имя моего PersistEntity.
Среди прочего было:
newtype instance Key Actor = ActorKey {unActorKey :: Int}
Итак, я написал:
maybeActor <- runDB $ get $ ActorKey actorId
case maybeActor of
Just actor -> defaultLayout $ do
$(widgetFile "actor-edit")
Nothing -> defaultLayout $ do
$(widgetFile "actor-new")