Ruby on rails 创建允许相同id的多个分配的数据库关系

Ruby on rails 创建允许相同id的多个分配的数据库关系,ruby-on-rails,database-design,Ruby On Rails,Database Design,我对RoR真的很陌生,所以如果我没有正确考虑这个问题,我向你道歉。我有一个报告,需要能够为该报告分配多个用户。一个用户可以被分配到多个报表,并且一个报表可以有多个用户。如何在允许的情况下创建数据库关系。我知道如何将一个用户分配给一个报表,但不能将多个用户分配给一个报表 我会使用加入类来实现这一点: class Report has_many :assignments has_many :users :through => :assignments end class Use

我对RoR真的很陌生,所以如果我没有正确考虑这个问题,我向你道歉。我有一个报告,需要能够为该报告分配多个用户。一个用户可以被分配到多个报表,并且一个报表可以有多个用户。如何在允许的情况下创建数据库关系。我知道如何将一个用户分配给一个报表,但不能将多个用户分配给一个报表

我会使用加入类来实现这一点:

class Report

  has_many :assignments 
  has_many :users :through => :assignments

end

class User

  has_many :assignments
  has_many :reports, :through => :assignments

end

class Assignment

  belongs_to :report
  belongs_to :user

end
Assignment
有两个字段:
report\u id
user\u id
来创建关系


阅读RubyonRails活动记录关联指南:

我强烈建议您熟悉RubyonRails指南。它们将被证明是无价的资产!!对于此任务,该站点将是

就代码而言,您希望创建三个数据库表:reports、reports\u users和users,其中reports\u users是一个联接表

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string      :name,        :null => false      
      t.timestamps
    end
  end
end


class CreateReports < ActiveRecord::Migration
  def change
    create_table :reports do |t|
      t.string      :name,        :null => false      
      t.timestamps
    end
  end
end


class ReportsUsers < ActiveRecord::Migration
  def change
    create_table :reports_users, :id => false do |t|
      t.references    :user,            :null => false                            
      t.references    :report,          :null => false                            
    end
  end
end
class CreateUsersfalse
t、 时间戳
结束
结束
结束
类CreateReportsfalse
t、 时间戳
结束
结束
结束
类ReportsUsersfalse do | t|
t、 引用:user,:null=>false
t、 引用:报告,:null=>false
结束
结束
结束
运行此迁移后,需要在模型中设置活动记录关联

class User < ActiveRecord::Base
  has_and_belongs_to_many :reports
end

class Report < ActiveRecord::Base
  has_and_belongs_to_many :user
end
class用户

这将设置数据库和多对多模型连接。这会让你开始。现在你必须去创建一些视图

好的,开始有意义了,但是我更清楚地理解了为什么我不使用has_和_-belish_-to_-many,因为一个报表有很多用户,用户可以属于很多报表?非常感谢您的帮助。您可以使用它,但使用上面的功能,您可以获得相同的功能,并且如果需要,还可以向作业中添加字段(如日期、注释等)。habtm隐藏连接表。总体功能是类似的。作为旁注,Rails指南站点是,另外一个您应该熟悉的站点是