2010-12-31 3 views
0

У меня есть приложение rails, которое отслеживает социальные данные. Пользователи будут иметь возможность создавать группы и добавлять страницы (то есть страницы фейкера facebook) в свои группы по социальному идентификатору страницы. Поскольку пользователи потенциально могут добавлять страницу как кто-то другой, я настроил ее так, чтобы на один социальный идентификатор была только одна страница. У меня также есть сводная таблица под названием Catgorizations, которая связывает страницы с группами и пользователями.Rails 3 set parameter of association_to association

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

 

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 для категоризации через объект страницы? Также, если это имеет значение, я использую приложение для обработки своих файлов управления пользователями.
Любая помощь будет принята с благодарностью.
Спасибо

ответ

0

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

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

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

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

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

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

+0

Я даю вам ответ на последнее предложение. Вы правы, моя категоризация не обязательно должна иметь связанный с ней user_id, так как я могу перейти на страницу через группу, принадлежащую пользователю. спасибо – iangraham

+0

Ага! Рад, что это разрешено. – stef

0

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

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

Page 
    belongs_to :user 

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

@page.user.id 
+0

Извините за замешательство, я забыл добавить отношение belongs_to в группах. Я обновил свой вопрос, чтобы это отразить. В таблице «Мои страницы» нет столбца user_id, так как многие пользователи могут получать доступ к тем же страницам данных через свои собственные группы. Должен ли я добавить has_many: пользователей в мою модель страниц? – iangraham

Смежные вопросы