Я работаю на 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
Я не понимаю, почему это даже не глядя для этой колонки. Любая помощь будет оценена!
Спасибо antpaw. Кажется, это шаг вперед (поскольку он больше не дает мне ошибок MySQL), но он по-прежнему возвращает nil для @ group.owner.inspect. –
Вы уверены, что column owner_id не пуст, и пользователь с этим идентификатором живет в таблице пользователя? – antpaw
Вы правы! На самом деле у меня был «user_id» вместо «owner_id». НО теперь, когда я пытаюсь войти с другой стороны (@ user.ownerships.inspect), он снова ищет столбец «user_id». P.S. Я обновил модель User в исходном вопросе. –