old_contents: # -*- coding: utf-8 -*-
  # Part of Odoo. See LICENSE file for full copyright and licensing details.
  
  from odoo import api, fields, models
  
  
  class MailMessage(models.Model):
      _inherit = 'mail.message'
  
      rating_ids = fields.One2many('rating.rating', 'message_id', string='Related ratings')
      rating_value = fields.Float("Rating Value", compute='_compute_rating_value', store=False)
  
      @api.multi
      @api.depends('rating_ids', 'rating_ids.rating')
      def _compute_rating_value(self):
          ratings = self.env['rating.rating'].search([('message_id', 'in', self.ids), ('consumed', '=', True)], order='create_date DESC')
          mapping = dict((r.message_id.id, r.rating) for r in ratings)
          for message in self:
              message.rating_value = mapping.get(message.id, 0.0)
  
new_contents: # -*- coding: utf-8 -*-
  # Part of Odoo. See LICENSE file for full copyright and licensing details.
  
  from odoo import api, fields, models
  
  
  class MailMessage(models.Model):
      _inherit = 'mail.message'
  
      rating_ids = fields.One2many('rating.rating', 'message_id', string='Related ratings')
      rating_value = fields.Float("Rating Value", compute='_compute_rating_value', store=False, search='_search_rating_value')
  
      @api.multi
      @api.depends('rating_ids', 'rating_ids.rating')
      def _compute_rating_value(self):
          ratings = self.env['rating.rating'].search([('message_id', 'in', self.ids), ('consumed', '=', True)], order='create_date DESC')
          mapping = dict((r.message_id.id, r.rating) for r in ratings)
          for message in self:
              message.rating_value = mapping.get(message.id, 0.0)
  
      @api.multi
      def _search_rating_value(self, operator, operand):
          return [('rating_ids.rating', operator, operand)]
  
subject: add search method on non-stored rating attribute