You can do thishas_and_belongs_to_many :messages, -> { where(created_at: '11-11-2014') }or you can use scope which is much better
def self.for_groupmessages_created_on(group_id,fromdate,todate) Tag.joins(:messages, :groups).where( messages: { created: fromdate..todate }, groups: { id: group_id }