こんにちは私は現在、ユニットテストのチュートリアルを行っています。私は2つのモデルを持っています:Song
とAlbum
。
class Song < ActiveRecord::Base
attr_accessible :title, :duration_in_seconds
belongs_to :album
end
class Album < ActiveRecord::Base
attr_accessible :artist, :title
has_many :songs
def duration
songs.sum(&:duration_in_seconds)
end
end
これは、合格することになっているテストです。
require 'test_helper'
class AlbumTest < ActiveSupport::TestCase
test "should be able to report duration based on combined duration of its songs" do
album = Album.create
3.times do
album.songs.create(:duration_in_seconds => 5)
end
assert_equal 15, album.duration
end
end
アルバムモデルに見られるように、と呼ばれるメソッドがありduration
ます。それについて2つの質問があります。
- つまり、SongはAlbumに属していることがわかります。Albumのインスタンスでメソッドを実行すると、そのメソッドでそのインスタンスの曲に直接アクセスできますか?メソッド定義がおかしいようです...@album.durationは@album.songs.sum(&:duration_in_seconds)を返しますか?Albumメソッドにこのメソッドがあったとしましょう。
def name_of_album
title
end
私が電話@album.name_of_album
した場合、それはと同じ@album.title
でしょうか?
&
期間メソッドのとは何ですか?と同じsongs.sum(:duration_in_seconds)
ですか?