Haskell 如何将记录语法与Yesod Persistent一起使用

Haskell 如何将记录语法与Yesod Persistent一起使用,haskell,yesod,Haskell,Yesod,为什么下面的方法不起作用?我有点知道有很多秘密,用户类型可能没有电子邮件,创建数据,和更新数据字段。不使用容易失控的位置参数实例化对象的最佳方法是什么 share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase| User email String createdAt UTCTime Maybe default=CURRENT_TIME updatedAt UTCTime Maybe default=

为什么下面的方法不起作用?我有点知道有很多秘密,
用户
类型可能没有
电子邮件
创建数据
,和
更新数据
字段。不使用容易失控的位置参数实例化对象的最佳方法是什么

share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
User
  email String
  createdAt UTCTime Maybe default=CURRENT_TIME
  updatedAt UTCTime Maybe default=CURRENT_TIME
  deriving Show
]]

main :: IO ()
main = runSqlite ":memory:" $ do
  runMigration migrateAll
  u <- insert $ User {email="saurabhnanda@gmail.com" createdAt=Nothing updatedAt=Nothing}

函数名如下:
userEmail
userCreatedAt
userUpdatedAt

运行cabal REPL并浏览该项目有助于识别为持久类型生成的函数

trysql.hs:38:23:
    ‘email’ is not a (visible) field of constructor ‘User’

trysql.hs:38:55:
    ‘createdAt’ is not a (visible) field of constructor ‘User’

trysql.hs:38:74:
    ‘updatedAt’ is not a (visible) field of constructor ‘User’