Rails 3 устанавливает параметр ассоциации - PullRequest
0 голосов
/ 31 декабря 2010

У меня есть приложение rails, которое отслеживает социальные данные. Пользователи смогут создавать группы и добавлять страницы (например, фан-страницы Facebook) в свои группы по социальному идентификатору страницы. Поскольку пользователи потенциально могут добавлять страницу как кто-то другой, я настроил ее так, чтобы на каждый идентификатор социальной сети была только одна страница. У меня также есть сводная таблица под названием Catgorizations, которая связывает страницы с группами и пользователями.

Мои модельные отношения настроены следующим образом:


User  
    has_many :groups

Group  
    belongs_to :user
    has_many :categorizations  
    has_many :pages, :through => :categorizations  

Page  
    has_many :categorizations  
    has_many :groups, :through => :categorizations

Categorization  
    belongs_to :group  
    belongs_to :page

Теперь, когда я создаю новую страницу и она сохраняет, она создает новую категоризацию. Проблема, с которой я сталкиваюсь, заключается в том, что в Категоризации мне нужно установить user_id вручную. Я пробовал:


@page.categorizations.user_id

Но я получаю неопределенный метод user_id Ошибка. Возможно, я подхожу к этому с неправильной стороны, но как бы я мог установить user_id для категоризации через объект страницы? Также, если это имеет значение, я использую devise для управления своими пользовательскими ресурсами.
Любая помощь будет принята с благодарностью.
Спасибо

Ответы [ 2 ]

0 голосов
/ 31 декабря 2010

То, что вы пытаетесь сделать, - это получить доступ к чему-то на нескольких уровнях в «цепочечном» наборе отношений.

Чтобы получить доступ к экземпляру модели User на данной странице, вам необходимополучить его классификации, выбрать один (как?), получить его группу, а затем посмотреть, что user_id этой группы.

Концептуально на странице будет много пользователей, которые могут отвечать за ее классификацию.

Чтобы получить что-то , вы можете произвольно выбрать первую классификацию и затем выполнитьчто-то с его пользователем:

cat = @page.categorizations.first
user = cat.group.user

Я не знаю, что вы имеете в виду под «установкой» идентификатора пользователя для категоризации - у него нет пользователя, поэтому я не знаю, что вы »тогда я захочу сделать с этой информацией, извините!

0 голосов
/ 31 декабря 2010

Из вашего описания и вашей модели только у Страниц есть Пользователь, а не Категоризация, поэтому вы получаете сообщение об ошибке, которого не существует (его нет в вашей базе данных).

Кроме того, выотсутствует противоположная ассоциация на странице:

Page
    belongs_to :user

Это позволяет вам вернуться к пользователю со страницы:

@page.user.id
...