Почему названная область?Вы можете просто сделать
def has_unread
!self.read || unread_comments?
end
или, если это должен быть метод класса
def self.has_unread(message)
msg = Message.find(message.id)
msg.read == false && msg.unread_comments?
end
Вы действительно хотите использовать именованные области, однако вызахочу что-то вроде этого:
scope :get_unreads, lambda {|message|
{ :joins => :comments,
:conditions => {:comments => {:message_id => message.id}, :message => ['read',0]},
:select => "DISTINCT `clients`.*" # kill duplicates
}
}
def self.has_unread?(message)
self.get_unreads(message).exists? && self.find(message.id).read
end