访问模型的关联

时间:2012-07-14 18:47:05

标签: ruby-on-rails ruby

假设你有这样的案例

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

  def albums
    return 5
  end
end

是否可以在不使用艺术家#专辑的情况下访问专辑关系,因为它已被覆盖?

这可能发生在mixins或其他随机情况下,它对测试大多有用。然后你可以说艺术家#专辑实际上是与专辑的关系

2 个答案:

答案 0 :(得分:1)

使用association,并检索其范围:

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

请注意,association没有记录,也没有记录它返回的对象(ActiveRecord::Associations::Association),这意味着scoped也没有记录。

答案 1 :(得分:0)

请问 - 你为什么要覆盖#albums?这有违反最低惊喜原则的缺点 - 每个人都希望#albums只是为了返回艺术家的专辑。

否则,我只会通过Album.where(artist_id: artist.id)访问它们。