2

我有一个像这样的持久模型:

Organization sql=organizations
    Id UUID default=uuid_generate_v1mc
    name Text
    UniqueOrganizationName name
    deriving Show Eq Typeable

我想在我的 Yesodroutes文件中使用组织名称,如下所示:

/#OrganizationName/onboarding/business/about OnboardingBusinessAboutR POST

使用OrganizationNameor UniqueOrganizationNamethere 给我这个错误:

/Users/maximiliantagher/Documents/Mercury/hs/mercury-web-backend/src/Foundation.hs:41:1: error:
    • Data constructor ‘OrganizationName’ cannot be used here
        (Perhaps you intended to use TypeInType)
    • In the type ‘OrganizationName’
      In the definition of data constructor ‘OnboardingBusinessAboutR’
      In the data instance declaration for ‘Route’

我可以使用新类型作为解决方法,只是想知道这是否有必要。

我想缺少PathPiece实例是一个问题,但如果只是这样,那么错误将是No instance for (PathPiece ...).

使用OrganizationNameUniqueOrganizationName将没问题。

4

1 回答 1

2

OrganizationName类型是一个构造函数,因为这是在 Persistent 机器中使用的,例如selectList. 实际上,是type 的构造函数的name参数,所以你只需要在你的路由中。OrganizationText#Text

于 2018-01-25T07:15:32.127 回答