Raczej nie ma takiej możliwości
To jest najnormalniejsza w świecie asocjacja. Pomyśl o tym tak jakbyś nie miał w ogóle has_many :messages - to jest tylko powiedzenie railsom, że jak napiszesz ticket.last_message, to żeby wykonał konkretne zapytanie, nie ma to żadnego związku z messages.
Jeżeli tak napiszesz, to dostaniesz ticket, nie ma z tym żadnych problemów, dokładnie tak samo jakbyś napisał ticket.messages.first.ticket - analogiczna sytuacja 
Jeżeli nie określisz :dependent to nic szczególnego.
Jeżeli masz has_many :messages, :dependent => :destroy, to zniszczą się wszystkie wiadomości bazując na tej asocjacji, ale jeżeli w last_message nic nie zdefiniujesz, to nic się nie stanie.
Ja mam coś takiego zrobione w jednej z moich aplikacji właśnie z tego powodu - pozbycie się takiego skomplikowanego zapytania w zamian za update’owanie jednego więcej rekordu przy zapisie jest dobrą wymianą.
Tak samo mam czasami po kilka asocjacji dla tej samej tabeli. Na przykład user, który posiada artykuły, które mogą być opublikowane (akurat to nie jest z życia wzięte, ale łatwiej na tym wyjaśnić niż przedstawiać o co chodzi w aplikacji, o której mówię).
[code]class User < ActiveRecord::Base
has_many :articles, :dependent => :destroy
has_many :published_articles,
:class_name => “Article”,
:foreign_key => “article_id”,
:conditions => [“published = ?”, true]
end[/code]
Niby bezsensowna konstrukacja, bo równie dobrze mogę zdefiniować metodę na asocjacji articles, albo dać named_scope :published w modelu Article, ale dzięki temu mogę zrobić:
User.find(:all, :include => :published_articles)
Przy optymalizacjach może to być niezwykle pomocne, jeżeli często gęsto pobieramy userów z opublikowanymi artykułami (wiem, że nie najlepszy przykład, ale rozumiesz na pewno o co chodzi :).