Tôi không chắc chắn điều này là có thể, nhưng với cách bạn có thể tiêm một phương thức vào các mô-đun, có cách nào để tiêm "actions_as_readable: on =>: updated_at" vào PublicActivity :: Activity?sử dụng gem chưa đọc với public_activity
Vấn đề là: Tôi muốn chưa đọc cũng theo dõi các hoạt động mới mà người dùng chưa thấy, vì vậy trước tiên tôi đã thử nó theo cách này.
class Activity < PublicActivity::Activity
acts_as_readable :on => :updated_at
end
class User < ActiveRecord::Base
acts_as_reader
end
Tuy nhiên tôi nhận thấy trong hồ sơ (read_marks bảng DB) khi tôi làm
Activity.mark_as_read! :all, :for => current_user
rằng chìa khóa readable_type được thiết lập để 'PublicActivity :: Hoạt động' thay vì 'Hoạt động'
Điều này là do đá quý chưa đọc sử dụng
user.read_marks.build(:readable_id => obj.id, :readable_type => self.base_class.name)
rằng lớp cơ sở đó sẽ đóng lớp est đến ActiveRecord :: Base Điều gì sẽ là lựa chọn tốt nhất?
1) tiêm bằng cách nào đó 'acts_as_readable: trên =>: updated_at' trực tiếp vào PublicActivity :: Hoạt động
2) ngã ba PublicActivity và kiểm tra xem viên ngọc chưa đọc được cài đặt, nếu có thêm dòng 'acts_as ... '
3) ngã ba đá quý chưa đọc và ... không chắc chắn những gì tôi sẽ làm ở đây, điều xấu xí đầu tiên đến với tâm trí sẽ là để kiểm tra xem một lớp học bắt đầu với PublicActivity!
Và chỉ để xác định vấn đề: Từ (read_marks bảng DB) của kỷ lục có thể đọc được loại là PublicActivity :: Hoạt động và không Hoạt động, tôi
Activity.unread_by(current_user).count
không bao giờ trả về đếm chính xác. Sử dụng
PublicActivity::Activity.unread...
sẽ bị lỗi vì 'actions_as_readable: on =>: updated_at' đang hoạt động chứ không phải PublicActivity :: Activity.
CẬP NHẬT
Tôi đã cố gắng để 'khỉ vá' plugin Public_Activity nhưng bây giờ tôi thậm chí còn bối rối hơn là tại sao nó không thành công, nó phải là một cái gì đó ngớ ngẩn tôi đang làm. Tôi đã thêm tệp sau. Tuy nhiên, readable_type vẫn là PublicActivity :: Hoạt động và số lượng của tôi vẫn giữ nguyên sau khi tôi làm
PublicActivity::Activity.mark_as_read! :all, :for => current_user
# config/initializers/activity_unread.rb
PublicActivity::Activity.module_eval do
acts_as_readable :on => :updated_at
end
CẬP NHẬT
AH! Đó là trường readable_type có giới hạn chỉ 20 mà đã cắt ngắn tên lớp của tôi. Bây giờ nó hoạt động sau khi tôi tăng kích thước.
mô tả public_activity nói Nơi này trong một tập tin và tham khảo nó trong một tập tin Rails initializer.WHich bạn nên đặt PublicActivity :: Activity.template = YAML.load_file ("# {} RAILS_ROOT /config/pba.yml") ? Tôi đã cố gắng để làm điều này trong application.rb, environment.rb .. tất cả hoán vị .. Tôi chỉ nhận được mẫu không được định nghĩa! Làm ơn giúp tôi! cảm ơn! – gkolan
Làm thế nào bạn sửa chữa trường readable_type có giới hạn chỉ 20? Đó là, làm thế nào bạn tăng kích thước của nó? –
http://stackoverflow.com/questions/15194261/how-can-i-increase-a-field-in-a-rails-gem/15194299#15194299 đã nhận nó –