Не удается получить данные из связанных моделей в Rails - PullRequest
0 голосов
/ 30 ноября 2010

У меня есть 2 модели в разных пространствах имен.

class Admin::Membership < ActiveRecord::Base
  has_many :authorization_roles
end


class AuthorizationRole < ActiveRecord::Base
  belongs_to :membership
end

Модель членства находится в другой папке с моделью AuthorizationRole (я не знаю, как она называется)

При запуске Admin::Membership.find(:all) данные из модели AuthorizationRole не включаются. Я создал поле members_id в таблице authorization_roles, но я все еще не могу связать обе модели. Что-то не так в этом коде? Извините, если я что-то упустил здесь.

Ответы [ 3 ]

1 голос
/ 30 ноября 2010

Попробуйте это

class Admin::Membership < ActiveRecord::Base
  has_many :authorization_roles, :class_name => '::AuthorizationRole'
end


class AuthorizationRole < ActiveRecord::Base
  belongs_to :membership, :class_name => 'Admin::Membership'
end
0 голосов
/ 30 ноября 2010

Проверьте, не устанавливаете ли вы префикс имени таблицы.Генератор моделей Rails добавляет такой файл для моделей с пространством имен:

# /app/models/admin.rb
module Admin
  def self.table_name_prefix
    'admin_'
  end
end

Примечание: это версия Rails 3.0.1 - не уверен в более ранних версиях.

0 голосов
/ 30 ноября 2010

Я никогда не использовал модели пространства имен и не думаю, что вам нужно ... но, возможно, вам придется указать имя класса в AuthorizationRole, что-то вроде:

belongs_to :membership, :class_name => 'Admin::Membership'

UPDATE:

Если у вас есть:

class Membership < ActiveRecord::Base
  has_many :authorization_roles
end

class AuthorizationRole < ActiveRecord::Base
  belongs_to :membership
end

Вы добавили целочисленный столбец с именем members_id к authorization_roles, и вы запустили миграцию. Теперь у вас должна быть возможность создавать права доступа типа @membership.authorization_roles.create( ... ) и извлекать их @membership.authorization_roles

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