【发布时间】:2015-04-20 17:33:01
【问题描述】:
Rails 新手(使用 4.1),将小型项目管理工具作为学习项目。我遇到了一个稍微复杂一点的模型关联,我想确保我在这里走在正确的轨道上,并询问如何扩展它。
考虑这种情况:
型号:
class Website < ActiveRecord::Base
has_many :website_user
has_many :users, through: :website_user
has_many :tasks, through: :website_user
end
class User < ActiveRecord::Base
has_many :websites, through: :website_user
has_many :website_user
end
class WebsiteUser < ActiveRecord::Base
belongs_to :website
belongs_to :user
belongs_to :role
has_many :tasks
end
class Task < ActiveRecord::Base
belongs_to :website_user
has_one :website, through: :website_user
end
class Role < ActiveRecord::Base
has_many :website_user
end
数据库:
create_table "roles", force: true do |t|
t.string "name"
end
create_table "tasks", force: true do |t|
t.text "description"
t.string "title"
t.integer "website_user_id"
end
create_table "users", force: true do |t|
t.string "name"
t.string "email"
t.string "password"
t.string "password_hash"
t.string "password_salt"
end
create_table "website_users", force: true do |t|
t.integer "website_id"
t.integer "user_id"
t.integer "role_id"
end
create_table "websites", force: true do |t|
t.string "name"
t.string "url"
end
我在这里所做的基本上是网站通过 website_user 表关联用户(在网站上工作的团队成员)。该表属于角色,因此团队成员将在此网站上拥有特定工作,最后,任务属于 website_user 关联,因此您可以交换用户,但任务将保持与角色和网站相关联.
我正在考虑对其进行更多扩展,以便该任务将在 website_user 上关联两次,一次用于分配者,一次用于分配的任务用户。然而,在这一点上,感觉就像我将有很多东西附加到中间的一个大连接表上,而且在我没有大量经验的情况下,它开始闻起来可能有更好的方法。
如果这一切看起来不错,您将如何将任务加入到 website_user 两次,一次用于分配者,一次用于分配?或者,如何重新排列模型关联?
【问题讨论】:
标签: ruby-on-rails ruby