【发布时间】:2015-07-25 00:10:33
【问题描述】:
我正在构建一个 Rails 应用程序。在我的应用程序中,有用户可以“关注”的项目。当用户关注其中一个页面时,如果有人上传/创建文件夹/文件,他/她将获得更新。
以下是有人刚刚创建新文件夹时的截图:
下面是我的文件夹控制器中“创建”操作的代码:
def create
@folder = current_user.folders.where(project_id: params[:project_id]).create(folder_params)
respond_to do |format|
if @folder.save
@folder.create_activity :create, owner: current_user, :params => {
:project_id => proc {|controller, project| @folder.project.id},
:project_name => proc {|controller, project| @folder.project.name},
}
format.html { redirect_to @folder.project, notice: 'Folder was successfully created.' }
format.json { render :show, status: :ok, location: @folder }
else
format.html { render :new }
format.json { render json: @folder.errors, status: :unprocessable_entity }
end
end
结束
如您所见,:project_id和:project_name是新建文件夹时public_activity的参数正在创建中。
下面是这个参数值保存后在数据库中的截图:
问题:
所以我的问题是,如何在我的活动控制器中使用此参数值?
这是我现在的活动控制器的代码:
class ActivitiesController < ApplicationController
def index
@activities = PublicActivity::Activity.order("created_at desc").where(owner_id: current_user.following_users, owner_type: "User")
end
end
我想使用 parameters 列中的 "project_id" 值,而不是使用 "owner_id:"。那我该怎么做呢?
非常感谢您提前! :)
【问题讨论】:
-
不是一个准确或干净的答案,但我认为在你的情况下你可以这样做
where(trackable_id: Folder.where(project_id: current_user.followed_projects), trackable_type: 'Folder' )。我认为否则您将必须获取可跟踪类型“文件夹”的所有记录,然后在 ruby 中检查它们。
标签: ruby-on-rails gem public-activity