我在不同的命名空间中有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字段,但我仍然无法让两个模型相关。这段代码有问题吗?对不起,如果我遗漏了一些基本的东西。
答案 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 - 不确定早期版本。