【发布时间】:2012-05-24 09:15:29
【问题描述】:
我有用户和项目。用户可以有很多项目,项目可以有很多用户。现在项目有一个特定的用户作为作者或创建者,即。项目有一个创建者,该创建者也是用户。我如何在 Rails 中映射这种关系!!!
【问题讨论】:
标签: ruby-on-rails database-design activerecord
我有用户和项目。用户可以有很多项目,项目可以有很多用户。现在项目有一个特定的用户作为作者或创建者,即。项目有一个创建者,该创建者也是用户。我如何在 Rails 中映射这种关系!!!
【问题讨论】:
标签: ruby-on-rails database-design activerecord
#Project
has_and_belongs_to_many :users
belongs_to :author, :class_name => "User"
#User
has_and_belongs_to_many :projects
has_many :authored_projects, :class_name => "Project", :foreign_key => "author_id"
您需要将author_id 添加到项目表中。
因此您可以使用:project.author、user.authored_projects 等
【讨论】:
project2 = user1.authored_projects.new
试试这个
class User < ActiveRecord::Base
has_and_belongs_to_many :projects
has_many :created_projects, :class_name => "Project", :foreign_key => "creator_id"
end
class Project< ActiveRecord::Base
has_and_belongs_to_many :users
belongs_to :creator, :class_name => "User"
end
【讨论】:
Project中指定foreign_key,没有必要:stackoverflow.com/questions/9555984/…另外,创建者和他的项目之间建立连接是必要的。