I know that there are many resources in this, but it’s difficult for me to connect any of them with my situation, so I was hoping that someone could help me clarify how this works:
Basically, I have a model Action(which is created at any time when a user does something that affects another user, for example, by commenting on his article or by voting on someones photos), these actions will be listed in the user control panel as all actions that happened to them like a stream ... sort of like a github news feed

I decided to go with the creation of a polymorphic association, here is what my model looks like:
class Action < ActiveRecord::Base
belongs_to :instigator, :polymorphic => true
belongs_to :victim, :polymorphic => true
end
, , , , , User
class User < ActiveRecord::Base
has_many :actions, :as => :instigator
has_many :actions, :as => :victim
end
, , , , User.find(1).actions, , instigator, victim, , have_many , , victim.
:
create_table :actions do |t|
t.references :instigator, :polymorphic => true
t.references :victim, :polymorphic => true
t.string :action_performed
t.references :resource, :polymorphic => true
t.timestamps
end
, SO.