无法从Rails中的相关模型获取数据

时间:2010-11-30 10:47:31

标签: ruby-on-rails

我在不同的命名空间中有2个模型。

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


class AuthorizationRole < ActiveRecord::Base
  belongs_to :membership
end

Membership模型与AuthorizationRole模型位于不同的文件夹中(我不知道所谓的内容)

运行Admin::Membership.find(:all)时,不包括AuthorizationRole模型中的数据。我在authorization_roles表上创建了membership_id字段,但我仍然无法让两个模型相关。这段代码有问题吗?对不起,如果我遗漏了一些基本的东西。

3 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分:0)

我从未使用过命名空间模型,我认为你不需要......但也许你必须在AuthorizationRole中指定类名,如:

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

更新:

假设你有:

class Membership < ActiveRecord::Base
  has_many :authorization_roles
end

class AuthorizationRole < ActiveRecord::Base
  belongs_to :membership
end

您已将名为membership_id的整数列添加到authorization_roles,并且您已运行迁移。现在,您应该能够像@membership.authorization_roles.create( ... )一样创建authorization_roles并获取它们@membership.authorization_roles

答案 2 :(得分:0)

检查您是否设置了表名前缀。 Rails模型生成器为命名空间模型添加这样的文件:

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

注意:这是Rails版本3.0.1 - 不确定早期版本。