Я нашел то, что работает.
В модели Actions:
def self.owned_by (user)
joins("join tasks on actions.task_id = tasks.id").
joins("join projects on tasks.list_id = projects.id").
where("projects.user_id = ?" , user.id)
end
С консоли:
u=User.find(1)
Action.owned_by(u).count
=> 521 # which is correct
Я не уверен, что этолучший способ сделать это, так как я немного новичок в sql.Я чувствую, что это можно сделать более кратким.
РЕДАКТИРОВАТЬ Чуть лучше
Action.joins(:task => [{:project => :user }]).where(:projects => {:user_id => user.id })