我对 RoR 真的很陌生,所以如果我没有考虑到这一点,我深表歉意。我有一个报告,我需要能够将多个用户分配给该报告。一个用户可以分配给多个报表,一个报表可以有多个用户。如何创建允许这样做的数据库关系。我了解如何将一个用户分配给一个报告,但不会将多个用户分配给一个报告。
问问题
97 次
2 回答
2
我会使用一个加入类来实现这一点:
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_id
和user_id
创建关系。
阅读 Ruby on Rails 活动记录关联指南:http: //guides.rubyonrails.org/association_basics.html
于 2013-03-03T05:33:53.633 回答
0
我强烈建议您熟悉 Ruby on Rails 指南。他们将被证明是无价的资产!!对于这个任务,站点将是RailsGuides Active Record Associations。
就代码而言,您希望创建三个数据库表:reports、reports_users 和 users,reports_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 User < ActiveRecord::Base
has_and_belongs_to_many :reports
end
class Report < ActiveRecord::Base
has_and_belongs_to_many :user
end
这将设置数据库和多对多模型连接。这会让你开始。现在你必须去创建一些视图
于 2013-03-03T05:43:12.837 回答