协会假设你有一个像这样访问模型
class Artist < ActiveRecord::Base
has_many :albums
belongs_to :record_label
def albums
return 5
end
end
的情况下,是否有可能访问该相册的关系,而无需使用艺术家#专辑,因为它已被重写?
这可能发生在mixin或其他随机情况下,它对测试最有帮助。然后,你可以说艺术家#专辑其实是专辑
协会假设你有一个像这样访问模型
class Artist < ActiveRecord::Base
has_many :albums
belongs_to :record_label
def albums
return 5
end
end
的情况下,是否有可能访问该相册的关系,而无需使用艺术家#专辑,因为它已被重写?
这可能发生在mixin或其他随机情况下,它对测试最有帮助。然后,你可以说艺术家#专辑其实是专辑
association
使用,并检索其范围:
a = Artist.first
a.association(:albums).scoped
注意association
未记录,并且也不是返回对象(ActiveRecord::Associations::Association
),这意味着scoped
也不会被记录。
请问有关系 - 你为什么需要重写#albums
?这有违反最小惊喜原则的缺点 - 每个人都希望#albums
只是为了返回艺术家的专辑。
,否则我会被Album.where(artist_id: artist.id)
简单地访问它们。
回答了上面的编辑和哪里只适用于关系是双向的情况下假设RecordLabel没有任何艺术家的知识然后哪里不工作 – austinbv 2012-07-14 20:10:32