我正在制作一个非常简单的ROR网站。
class Product < ActiveRecord::Base
belongs_to :category
has_many :photos
has_many :ordered_photos,
:class_name => 'Photo',
:order => 'name'
has_one :random_photo_1,
:class_name => 'Photo',
:order => 'RAND()'
def random_photo_2
Photo.find(:first, :conditions => { :product_id => self.id }, :order => 'RAND()')
end
end
在实现多个ActiveRecord类时,我很怀疑,我不明白random_photo_1实现random_photo_2方法之间的区别是什么。
P.S。对不起我的英语。
答案 0 :(得分:4)
他们都会做同样的工作。
以下好处:random_photo_1是您可以轻松加载所有“随机照片”关联,只要您查找多个产品,如果您要展示大量产品和随机产品,这将真正有助于提高性能你的照片上的照片。
#:include will eagerly load the associations
@products = Product.find(:all, :include => :random_photo_1)
然后,每当您在视图上迭代@products
时,如果您这样做:
@products.each do |product|
#This will not do a new select against the database
<%= product.random_photo_1 %>
end