假设模型X有多个Y,并且模型Y属于X。每个Y都有一个插入数据库的日期。现在,是否可以加载所有X并渴望为每个X加载最后一个Y(仅是最后一个,因为每个X具有Ys的炫耀效果)?
是,
让我们举个例子
class Song < ActiveRecord::Base has_many :votes end class Vote < ActiveRecord::Base belongs_to :song end
向歌曲添加新的关联
# for Rails version <4: has_one :last_vote, :class_name => 'Vote', :order => 'created_at DESC' # for Rails version 4+ has_one :last_vote, -> { order(created_at: :desc) }, class_name: 'Vote'
这个新的协会将始终返回最新创建的歌曲投票。
渴望加载
# for Rails version <3: songs = Song.find(:all, :conditions => 'artist_name = "frank"', :include => :last_vote) # for Rails version 3+: songs = Song.includes(:last_vote).where(artist_name: 'frank')