在我的应用程序中,我有一个页面可以呈现数据库中的所有项目。我想要的是能够过滤结果,例如只显示用户是成员的一次。
以下来自我的项目控制器,我想在其中执行此操作(仅显示用户是成员的项目)。首先从找到 user_id 的“ProjectUser”中获取所有项目。然后我想使用这个数组从表“项目”中检索所有相关项目,并使用@user_is_member.project_id。
这不起作用,因为它只给了我一个项目,而不是全部。
如何更改代码以完成我想要的?
编码:
@user_is_member = ProjectsUser.where(:user_id => current_user.id)
@user_is_member.each do |member|
@projects = Project.where(:id => member.project_id)
end
表:
项目_用户:
project_id
user_id
项目:
id
...non relevant fields...
楷模:
用户型号:
class User < ActiveRecord::Base
has_many :project_users
has_and_belongs_to_many :projects
end
项目型号:
class Project < ActiveRecord::Base
has_and_belongs_to_many :users # => , :class_name => 'User'
belongs_to :user
end
项目用户模型:
class ProjectsUser < ActiveRecord::Base
belongs_to :user
belongs_to :project
end
注意: current_user 是当前登录的用户(可以访问所有用户字段,例如“id”)