Передать объект в has_many: условия - PullRequest
0 голосов
/ 30 октября 2009

Мне нужно передать self как объект, а не класс: в строку условий, есть ли способ сделать это?

has_many :topic,
:class => 'FileTopic',
:conditions => "id in (select * from file_topics where program_id = #{self.id})"

Моя проблема в том, что я всегда дает мне идентификатор класса, но не экземпляр класса. Я думаю, has_many оценивается на уровне класса?

Спасибо

Ответы [ 2 ]

2 голосов
/ 30 октября 2009

Имеет много - это метод класса. Поэтому любая ссылка на себя в своих аргументах - это ссылки на класс.

Похоже, вы хотите указать внешний ключ на стороне принадлежащих вещей.

Вы уже пробовали это:

has_many :topic, :class => 'FileTopic', :foreign_key => "program_id"

Вы действительно должны прочитать документацию ActiveRecord :: Associations , если вы еще этого не сделали. Существует очень мало проблем с ассоциациями, которые не могут быть решены с помощью правильного набора опций принадлежащих

2 голосов
/ 30 октября 2009

Оценивается при загрузке класса, да. Но только если вы используете двойные кавычки - переменные в одиночных кавычках заполняются при вызове. Подробнее здесь.

Однако, может быть, вам стоит взглянуть на именованных областей ?

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