嗨,我目前正在阅读有关单元测试的教程。我有两个模型: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
. 我对此有两个问题。
- 所以我们知道 Song 属于 Album。如果我在专辑的实例上执行一个方法,我可以像那样直接在该方法中访问该实例的歌曲吗?方法定义看起来很奇怪...... @album.duration 会返回 @album.songs.sum(&:duration_in_seconds)?假设我在相册方法中有这个方法:
def name_of_album
title
end
如果我打电话@album.name_of_album
会是一样的@album.title
吗?
&
持续时间中的方法是什么?是一样的songs.sum(:duration_in_seconds)
吗?