【问题标题】:find by all by an Id, but exclude certain Ids全部按 ID 查找,但排除某些 ID
【发布时间】:2013-06-16 22:23:00
【问题描述】:

我正在查看公共活动 Gem Railscast 视频。 (http://railscasts.com/episodes/406-public-activity)

一切正常,但我希望能够找到执行的所有给定活动,除了那些包含属于 Current_User 的接收者 ID 的活动

我有一个方法 working(activities) 可以让我找到所有用户执行的所有活动

第二种方法(通知)查找所有接收者 ID 等于 Current_User 的活动

控制器

**(finds all activities)**
def activities
  @title = "Activities"
  @activities = PublicActivity::Activity.order("created_at desc").where(owner_id: current_user.followed_users.all, owner_type: "User") 
  @user = User.find_by_username(params[:id])
  render 'activities'
end

**(find all notifications where recipient_id is Current_User)**
def notifications
  @title = "Notifications"
  @activities = PublicActivity::Activity.order("created_at desc").where(recipient_id: current_user, recipient_type: "User") 
  @user = User.find_by_username(params[:id])
  render 'notifications'
end

有没有办法将它们组合起来,以便第一种方法(活动)找到所有活动,除了在方法 2(通知)中找到的活动,其中收件人 ID 等于 current_user

我知道这很容易做到……我只是想不通。请帮助.... Rails 新手:D

我当前的数据库看起来/存储一切都是这样的

#<PublicActivity::Activity id: 108, trackable_id: 133, trackable_type: "Relationship",
owner_id: 1, owner_type: "User", key: "relationship.create", parameters: {}, 
recipient_id: 1, recipient_type: User, created_at: "2013-06-16 07:37:28", 
updated_at: "2013-06-16 07:37:28">

【问题讨论】:

    标签: ruby-on-rails ruby gem railscasts


    【解决方案1】:

    您必须使用自定义 SQL 查询,但这样的事情应该可以解决您的问题:

    @activities = PublicActivity::Activity.where("recipient_id != ?", current_user.id).where(recipient_type: "User", owner_id: current_user.followed_users.all, owner_type: "User")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      相关资源
      最近更新 更多