has_many с двумя иностранными ключами - PullRequest
1 голос
/ 18 марта 2012

я знаю, что есть много вопросов по этому вопросу, но я думаю, что мой случай немного отличается.

с использованием рельсов 2.3.8

У меня есть двамодели, пользователь и сообщение.

В сообщениях таблицы есть столбцы sender_id и receient_id, и оба они ссылаются на таблицу пользователей.Я мог бы сделать что-то вроде этого:

class User < ActiveRecord::Base

  has_many :messages_as_sender, :class_name => 'Message', :foreign_key => 'sender_id'
  has_many :messages_as_recipient, :class_name => 'Message', :foreign_key => 'recipient_id'

  def messages
     messages_as_sender + messages_as_recipient
  end
end

В большинстве случаев этого может быть достаточно, но что если я захочу сделать это:

user.messages.all(:limit => 10)
or
user.messages.all(:conditions => "some condition")

Rails что-то для этого предоставит?

ОБНОВЛЕНИЕ

Я надеялся, что что-то более ясное, но я получаю что-то вроде гаявата, который сказал спасибо

1 Ответ

2 голосов
/ 18 марта 2012

Что-то вроде:

def self.messages
  Messages.all(:conditions => ["sender_id = ? OR recipient_id = ?", self.id, self.id])
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...