0

あなたがこのようなケースを持っていると仮定します

class Artist < ActiveRecord::Base
  has_many :albums
  belongs_to :record_label

  def albums
    return 5
  end
end

オーバーライドされているため、Artist#albumsを使用せずにアルバムの関係にアクセスすることはできますか?

これは、ミックスインまたはその他のランダムなケースで発生する可能性があり、ほとんどの場合、テストに役立ちます。そうすれば、Artist#albumsは実際にはアルバムとの関係であると言えます。

4

2 に答える 2

1

を使用associationして、そのスコープを取得します。

a = Artist.first
a.association(:albums).scoped

associationは文書化されておらず、返されるオブジェクト(ActiveRecord::Associations::Association)も文書化されていないことに注意してください。つまり、文書化されscopedていません。

于 2012-07-14T22:13:57.693 に答える
0

質問してもいいですか-なぜオーバーライドする必要があるの#albumsですか?#albumsこれには、驚き最小の原則に違反するという欠点があります。誰もがアーティストのアルバムを返却することだけを期待するでしょう。

それ以外の場合は、。でアクセスしますAlbum.where(artist_id: artist.id)

于 2012-07-14T19:02:35.563 に答える