Ruby on Rails:使用角色模型为授权创建迁移脚本

时间:2014-08-05 17:06:36

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

我的应用程序作为用户模型通过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

2 个答案:

答案 0 :(得分:2)

添加如下迁移:

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来(只是在语义上)反映表格之间的关系,但这取决于您。

答案 1 :(得分:0)

只需要创建一个表迁移。

 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