Комплексные "косвенные" ассоциации - PullRequest
0 голосов
/ 16 марта 2012

У меня есть модель Like с понравившимся идентификатором и идентификатором пользователя. И модель сообщения to_id и from_id.

class Like < ActiveRecord::Base
   belongs_to :user
   belongs_to :liked, :class_name => "User"
   validates_presence_of :user_id
   validates_presence_of :liked_id

   def latest_message
     Message.where(["(to_id = ? AND from_id = ?) OR (to_id = ? AND from_id = ?)", self.liked_id, self.user_id, self.user_id, self.liked_id]).order("created_at DESC").limit(1).first
   end
end


class Message < ActiveRecord::Base
   belongs_to :to, :class_name => "User"
   belongs_to :from, :class_name => "User"
   validates_presence_of :to_id, :from_id, :content
end

Я хочу установить связь между подобным и сообщением и получить его обратно в одном запросе.

В настоящее время я использую опцию: method => [: latest_message] в моей сериализации json. Но это не очень эффективно.

Можно ли создать сложную ассоциацию, подобную этой, где первичный и внешний ключи являются AND ИЛИ, как в операторе where в latest_message? В идеале я хочу has_one: latest_message

1 Ответ

0 голосов
/ 16 марта 2012

Попробуйте создать расширение ассоциации.Смотри http://guides.rubyonrails.org/association_basics.html#association-extensions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...