Когда ассоциация указывается с именем класса, как вы получаете к нему доступ? Рельсы 3 - PullRequest
1 голос
/ 04 января 2012

Итак, у меня есть модель транзакций.

Transactions.rb имеет:

 belongs_to :buyer, :class_name => "User"
 belongs_to :seller, :class_name => "User"

Пользователь, вошедший в систему, доступен с помощью current_user.

Как я могу сделать что-то вроде current_user.transactions? (который не будет работать, поскольку транзакции не имеют столбца user_id) Или что-то вроде current_user.transactions.buyer?

Спасибо!

(также пользовательская модель has_many: транзакции)

1 Ответ

3 голосов
/ 04 января 2012

Все ассоциации в Rails односторонние.

Таким образом, для каждого belongs_to необходимо добавить has_many или has_one на другой стороне.

Я бы посоветовал вам что-то подобное;

class User
  has_many :transactions_as_buyer,
    :class_name => "Transaction",
    :foreign_key => :buyer_id

  has_many :transactions_as_seller,
    :class_name => "Transaction",
    :foreign_key => :seller_id
end

Теперь вы можете сказать;

current_user.transactions_as_seller.map(&:buyer)

чтобы получить массив покупателей.

Конечно, в зависимости от вашего приложения у вас может быть более подходящее имя, чем "Transactions_as_buyer / seller"

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