2012-02-03 1 views
3

Я работаю на Rails 3.1 приложения, которое имеет следующие модели:has_and_belongs_to_many или has_many для отношений с пользователем/группой?

Пользователь:

class User < ActiveRecord::Base 
    has_and_belongs_to_many :groups 
    has_many :ownerships, :class_name => 'Group' 
end 

Группа:

class Group < ActiveRecord::Base 
    has_and_belongs_to_many :users 
    has_one :owner, :class_name => 'User' 
end 

Там в таблице соединения между ними, а таблица групп также имеет столбец «user_id». Я хотел бы ожидать, чтобы иметь возможность написать это в моем groups_controller.rb

@group = Group.find(params[:id]) 
foo = @group.owner 

но когда я делаю, я представил со следующей ошибкой:

Mysql2::Error: Unknown column 'users.group_id' in 'where clause': SELECT `users`.* FROM `users` WHERE `users`.`group_id` = 1 LIMIT 1 

Я не понимаю, почему это даже не глядя для этой колонки. Любая помощь будет оценена!

ответ

2

убедитесь, что таблица групп имеет user_id или owner_id колонку и попробовать это:

class Group < ActiveRecord::Base 
    has_and_belongs_to_many :users 
    belongs_to :owner, :class_name => 'User' 
    end 
+0

Спасибо antpaw. Кажется, это шаг вперед (поскольку он больше не дает мне ошибок MySQL), но он по-прежнему возвращает nil для @ group.owner.inspect. –

+0

Вы уверены, что column owner_id не пуст, и пользователь с этим идентификатором живет в таблице пользователя? – antpaw

+0

Вы правы! На самом деле у меня был «user_id» вместо «owner_id». НО теперь, когда я пытаюсь войти с другой стороны (@ user.ownerships.inspect), он снова ищет столбец «user_id». P.S. Я обновил модель User в исходном вопросе. –

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

  • Нет связанных вопросов^_^