Maybe consider using "completed" and "completed_at" in place of "is_checked" and "when_checked".

todo.completed or todo.completed_at would be a bit more railsy. A todo doesn't have a concept of a checkbox... that's a UI concern, but todos get "completed".

In thinking about it, "user_todo_statuses" would likely be more appropriate as just "user_todos", with the statuses being represented just by column data.