{"id":19252208,"url":"https://github.com/rails-engine/action-activity","last_synced_at":"2026-02-11T07:33:17.642Z","repository":{"id":66281908,"uuid":"295295104","full_name":"rails-engine/action-activity","owner":"rails-engine","description":"Social activity","archived":false,"fork":false,"pushed_at":"2020-09-14T03:49:01.000Z","size":3,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-04T07:29:04.037Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rails-engine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-14T03:36:15.000Z","updated_at":"2020-09-14T15:15:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"1a5adc64-6a86-4ec9-a7ac-78705972f95c","html_url":"https://github.com/rails-engine/action-activity","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rails-engine/action-activity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rails-engine%2Faction-activity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rails-engine%2Faction-activity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rails-engine%2Faction-activity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rails-engine%2Faction-activity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rails-engine","download_url":"https://codeload.github.com/rails-engine/action-activity/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rails-engine%2Faction-activity/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29329493,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T06:13:03.264Z","status":"ssl_error","status_checked_at":"2026-02-11T06:12:55.843Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T18:25:52.160Z","updated_at":"2026-02-11T07:33:17.624Z","avatar_url":"https://github.com/rails-engine.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# action-activity\n\nSocial activity\n\n## TODO\n\n```sql\nclass CreateActivities \u003c ActiveRecord::Migration[6.0]\n  def change\n    create_table :activities do |t|\n      t.string :action, null: false\n      t.references :actor, polymorphic: true, null: false\n      t.references :target, polymorphic: true\n      t.references :second_target, polymorphic: true\n      t.jsonb :payload, null: false, default: {}\n      t.integer :status, null: false, default: 1\n\n      t.timestamps\n    end\n    \n    create_index :activities, [:actor_type, :actor_id, :status]\n    create_index :activities, [:actor_type, :actor_id, :action, :status]\n    create_index :activities, [:target_type, :target_id]\n    create_index :activities, [:second_target_type, :second_target_id]\n  end\nend\n```\n\n- actor - polymorphic，可以是一个用户，可以是一个群\n- action - 动态类型，比如 `follow-user`, `create-comment`, `create-topic`, `join-group`\n- target - 触发创建出动态的第一个数据对象（确保存储用于是第一个数据），比如 `create-comment` 场景，target 应该是创建出来的 comment\n- second_target - 触发创建动态的次级数据对象，比如 `create-comment` 场景里面，comment 的 target\n- payload - 用于存储其他数据，比如 `rename-group`，里面 payload 存储 `{ from: \"old-name\", to: \"new-name\" }`，也可以存储更复杂的关联数据，已解决 target, second_target 无法满足的场景。\n- status - 用于数据存在审核、软删除的场景，在 target / second_target 等数据状态变更的时候，可以同步更新 activity，这样不用删除。\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frails-engine%2Faction-activity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frails-engine%2Faction-activity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frails-engine%2Faction-activity/lists"}