【问题标题】:Ruby on Rails :Creating Migration Script for Authorization with Role ModelRuby on Rails:使用角色模型创建用于授权的迁移脚本
【发布时间】:2014-08-06 01:27:21
【问题描述】:

我的应用程序作为用户模型通过 Devise Gem 生成。我想通过用户和角色之间的分配通过多对多关联与每个用户关联一些角色。如何生成迁移脚本以便用户与某些角色相关联。模型类将如下所示

class User < ActiveRecord::Base
  has_many :assignments
  has_many :roles, :through => :assignments
end

class Assignment < ActiveRecord::Base
  belongs_to :user
  belongs_to :role
end

class Role < ActiveRecord::Base
  has_many :assignments
  has_many :users, :through => :assignments
end

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 devise


    【解决方案1】:

    像这样添加迁移:

    rails g migration create_assignments_table
    

    并用以下内容填充该文件:

    class CreateAssignmentsTable < ActiveRecord::Migration
      def change
        create_table :assignments do |t|
          t.references :user
          t.references :role
    
          t.timestamps
        end
      end
    end
    

    我喜欢使用t.references 而不是t.integer 来(仅在语义上)反映表之间的关系,但这取决于你。

    【讨论】:

    • 我实际上只有为应用程序创建的用户模型,它也不包含对分配表的任何引用。 .另外,我还需要参考分配表生成角色模型,我该如何生成呢?如果你能帮忙就太好了
    • 我不明白你在问什么。看来您已正确创建模型,而您只是缺少 JOIN 表(作业)。
    • 实际上我没有创建模型。 .实际上我正在关注这个链接github.com/ryanb/cancan/wiki/Separate-Role-Model。他们已经给出了生成的模型,但是我想学习如何在已经创建用户模型并且没有创建其他模型的情况下生成模型
    • 您可以在 app/models 下创建文件并使用您在示例中输入的代码。
    • 我建议您花一些时间学习 Rails 迁移的基础知识,然后再提出一个更具体的问题。无论哪种方式,请关注@agmcleod 评论,你应该没问题。
    【解决方案2】:

    只需要创建表迁移。

     rails g migration create_assignments
    

    并确保它具有您需要的列。

    class CreateAssignments < ActiveRecord::Migration
      def change
        create_table :assignments do |t|
          t.integer :user_id
          t.integer :role_id
    
          t.timestamps
        end
      end
    end
    

    【讨论】:

    • 我实际上只有为应用程序创建的用户模型,它也不包含对分配表的任何引用。 .另外,我还需要参考分配表生成角色模型,我该如何生成呢?如果你能帮忙就太好了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多