Aha!Я могу уменьшить его еще больше, хе:
def change_solo!
update_attribute :solo, !solo
end
Это автоматически делает сохранение.
Но это не будет полным без тестов:
def test_change_solo_true_to_false
Artist.create :solo => true
assert Artist.change_solo!
assert !Artist.solo?
end
def test_change_solo_false_to_true
Artist.create :solo => false
assert Artist.change_solo!
assert Artist.solo?
end
Byкстати, выше я использую соглашение, что любой логический атрибут в ActiveRecord может иметь знак вопроса в конце, чтобы сделать его более понятным.