Ruby on rails 添加不可修改的设计不起作用

Ruby on rails 添加不可修改的设计不起作用,ruby-on-rails,devise,devise-invitable,Ruby On Rails,Devise,Devise Invitable,我的RoR应用程序中有一个用户模型(在PostgreSQL数据库中),它使用Desive进行身份验证。现在我想邀请用户,所以我决定使用gem。按照安装指南,我做到了: 将gem“design_invitable”添加到我的gem文件中 运行rails生成设备不可修改:安装 运行rails生成设计不可侵犯用户 然后我尝试运行上面生成的迁移(这是这个gem给出的默认迁移,看起来像:) 我不是PostgreSQL的大师,它是外键,但看起来应该有邀请表,不是吗?但它并没有被创造出来。所以,我对这一切有点

我的RoR应用程序中有一个用户模型(在PostgreSQL数据库中),它使用Desive进行身份验证。现在我想邀请用户,所以我决定使用gem。按照安装指南,我做到了:

  • 将gem“design_invitable”添加到我的gem文件中
  • 运行rails生成设备不可修改:安装
  • 运行rails生成设计不可侵犯用户
  • 然后我尝试运行上面生成的迁移(这是这个gem给出的默认迁移,看起来像:)

    我不是PostgreSQL的大师,它是外键,但看起来应该有邀请表,不是吗?但它并没有被创造出来。所以,我对这一切有点困惑

    我的Desive用户模型:

    devise :invitable, :database_authenticatable, :recoverable, :rememberable, token_authenticatable,:trackable, :authentication_keys => [:email]
    
    生成脚本添加了字段
    :invitable,:database\u authenticable

    您的问题在于:

    3. Run rails generate devise_invitable
    
    那应该是

    rails generate devise_invitable MODEL
    
    然后用Desive模型的名称替换模型。这可能是用户,但它应该是您正在为您设计和管理的模型的名称。因此,如果使用用户作为模型:

    rails generate devise_invitable User
    
    因为您没有提供模型名称,所以生成器正在生成无效的迁移,这可能是一个bug,您可能需要报告)。当迁移尝试在邀请和发出邀请的“用户”之间创建外键关系时,它会失败,因为它不知道要引用哪个表

    编辑:2013-05-04:

    您的用户模型是否也包含以下内容:

     has_many :invitations, :class_name => self.to_s, :as => :invited_by
    
    你的问题是:

    3. Run rails generate devise_invitable
    
    那应该是

    rails generate devise_invitable MODEL
    
    然后用Desive模型的名称替换模型。这可能是用户,但它应该是您正在为您设计和管理的模型的名称。因此,如果使用用户作为模型:

    rails generate devise_invitable User
    
    因为您没有提供模型名称,所以生成器正在生成无效的迁移,这可能是一个bug,您可能需要报告)。当迁移尝试在邀请和发出邀请的“用户”之间创建外键关系时,它会失败,因为它不知道要引用哪个表

    编辑:2013-05-04:

    您的用户模型是否也包含以下内容:

     has_many :invitations, :class_name => self.to_s, :as => :invited_by
    

    您是否正在使用Schema_plus Gem

    如果您正在使用它,这个Gem将尝试基于任何字段的_id创建外键关系

    您需要为这样的字段禁用此选项

    t.integer  :invited_by_id,  foreign_key: false
    

    如果是这种情况,请告诉我。

    您使用的是Schema\u plus Gem吗

    如果您正在使用它,这个Gem将尝试基于任何字段的_id创建外键关系

    您需要为这样的字段禁用此选项

    t.integer  :invited_by_id,  foreign_key: false
    

    如果是这种情况,请告诉我。

    对不起,也许我没有提及,但我确实使用了用户模型进行迁移,因此您可以看到:不可修改已添加到我的用户模型中。那么。我将无法再提供任何帮助,直到今天晚上我可以回家并将我的设置与你的进行比较。我将不胜感激!顺便说一句,我通过删除所有要按列处理的内容来实现(迁移),但这当然不是解决方案。没问题。我要么在工作和糟糕的电影之夜之间有时间,要么在早上开始。谢谢你的帮助,非常感谢。但我的问题是schema_plus gem,我错过了。对不起,也许我没有提到它,但我确实使用了用户模型进行迁移,因此您可以看到:invitable已添加到我的用户模型中。那么。我将无法再提供任何帮助,直到今天晚上我可以回家并将我的设置与你的进行比较。我将不胜感激!顺便说一句,我通过删除所有要按列处理的内容来实现(迁移),但这当然不是解决方案。没问题。我要么在工作和糟糕的电影之夜之间有时间,要么在早上开始。谢谢你的帮助,非常感谢。但我的问题是schema_plus gem,我错过了。谢谢!完全正确。我在做遗留项目,错过了这个邪恶的模式加宝石。因此,除了您提出的代码之外,我还必须添加:
    t.references:invested\u by,:polymorphic=>true,foreign\u key:false
    ,因为它(schema\u+gem)也希望为“reference”字段创建ID。谢谢!完全正确。我在做遗留项目,错过了这个邪恶的模式加宝石。因此,除了您提出的代码之外,我还必须添加:
    t.references:invested\u by,:polymorphic=>true,foreign\u key:false
    ,因为它(schema\u+gem)也希望为“reference”字段创建ID。