【问题标题】:Public_activity gem parameters Rails 3Public_activity gem 参数 Rails 3
【发布时间】:2014-08-15 21:52:19
【问题描述】:

我正在尝试使用带有参数的 Public_activity gem。

在我的控制台上:

 c = PublicActivity::Activity.find(34)
 PublicActivity::Activity Load (0.2ms)  SELECT "events".* FROM "events" WHERE     
 "events"."id" = ? LIMIT 1  [["id", 34]]
 => #<PublicActivity::Activity id: 34, trackable_id: 17, trackable_type: "Follow",   owner_id: 2, owner_type: "User", key: "follow.destroy", parameters: {:notif=>"on"},    recipient_id: nil, recipient_type: nil, created_at: "2014-08-15 04:44:03", updated_at: "2014-08-15 04:44:03"> 

如何在 PublicActivity::Activity.all 中搜索以找到带有 parameters[:notif] = "on" 的一条记录?

实际上我的问题要简单得多...如何使用 Active Record Query 查找带有哈希的特定记录! ?

【问题讨论】:

  • gem 的作者非常有帮助。由于数据是序列化的,因此无法通过参数进行搜索。我实际上使用了另一种技术

标签: ruby-on-rails hash gem public-activity


【解决方案1】:

gem 所有者建议添加自定义字段。来自:https://github.com/pokonski/public_activity#use-custom-fields-on-activity

“除了每个活动都有的几个字段之外,您还可以设置自定义字段。这可能非常有益,因为参数是序列化的哈希,无法从数据库中轻松查询。”

添加自定义字段:

将您的自定义字段添加到活动表中:

class AddNotifFieldToActivities < ActiveRecord::Migration

  def change
    change_table :activities do |t|
      t.string :notif
    end
  end

end

在模型中分配自定义字段:

class User < ActiveRecord::Base
  include PublicActivity::Model
  tracked notif: proc {|controller, user| controller.notif }
end

现在您可以使用查询来查找活动记录,其中notif: on

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2011-10-09
    相关资源
    最近更新 更多