Aber was macht denn nun die ursprüngliche find_skill_index-Funktion? Die bekommt skill übergeben und da dort auf skill.id zugegriffen wird, nehme ich mal an, dass skill ein Objekt der Skill-Klasse ist. Dann wird mit der Schleife geschaut, ob diese id irgendwo bei den Skills des Charakters ist und falls ja,wird die Position im Array des Skills ausgegeben.

Müßte dein zweites Beispiel dann nicht so lauten?

Code:
skill_index = if user.skills.include?(skill.id) then user.skills.index(skill.id) else 0 end