我试图在用户和项目之间建立基本的关联:
user.rb
class User < ActiveRecord::Base
has_many :projects, foreign_key: 'owner_id'
has_many :project_members, through: :project_members
end
project.rb
class Project < ActiveRecord::Base
has_many :project_members, dependent: :destroy
has_many :users, through: :project_members
end
project_member.rb
class ProjectMember < ActiveRecord::Base
belongs_to :user
belongs_to :project
end
我的project_members表:
+----+------------+---------+
| id | project_id | user_id |
+----+------------+---------+
| 1 | 1 | 1 |
| 2 | 2 | 1 |
+----+------------+---------+
和我的项目表:
+----+-------+----------+
| id | name | owner_id |
+----+-------+----------+
| 1 | test1 | 1 |
| 2 | test2 | 2 |
+----+-------+----------+
我为什么与
current_user.projects
仅projects.owner_id = current_user.id的项目,而不是用户所属成员的项目?
但是我认为尝试获取所需数据是错误的一面。我在/ projects上,项目控制器获取数据。我想我应该使用类似的东西:
class ProjectsController < ApplicationController
# GET /projects
def index
@projects = Project.all
end
end
但是我怎么才能只获得current_user.id成员的项目呢?
我认为您应该设置一点点不同:
class User < ActiveRecord::Base
has_many :owned_projects, class_name: "Project", foreign_key: 'owner_id', dependent: :restrict_with_error
has_many :project_members, dependent: :destroy
has_many :projects, through: :project_members
end
class Project < ActiveRecord::Base
has_many :project_members, dependent: :destroy
has_many :users, through: :project_members
belongs_to :owner, class_name: "User"
end
为了获得所有项目,current_user是您的一员,可以执行以下操作:
current_user.projects
为了获得current_user拥有的所有项目,您可以执行以下操作:
current_user.owned_projects
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句