我目前正在测试2个型号。一个是顶级模型(Account :: User),另一个是关联模型(Account :: Profile)。我在从相关模型中提取数据时遇到一些困难。
以下代码适用于Rails 3.1
我得到了例外:
undefined method profile' for #<Class:0x7fe8aa0674b8>
目前我的模型看起来像这样:
帐户::用户:
class Account::User < ActiveRecord::Base
validates_presence_of :username, :first_name, :last_name, :instance_id, :user_type, :is_active
validates_uniqueness_of :username
has_one :profile, :class_name=> 'Account::Profile'
def self.all_by_user_type(user_type)
return all :conditions => ["user_type = ?", user_type]
end
def self.all_by_user_status(user_status)
return all :conditions => ["is_active = ?", user_status]
end
def self.all_by_last_login(last_login)
return all :conditions => ["last_login between ? and ?", last_login, Date.current]
end
def self.all_by_created_by(created_by)
return all :conditions => ["created_by = ?", created_by]
end
end
帐户::资料
class Account::Profile < ActiveRecord::Base
belongs_to :user, :class_name 'Account::User'
end
我的控制器操作如下所示:
def dashboard
@user = Account::User.profile
end
答案 0 :(得分:1)
当您编写Account::User.profile
时,您正在尝试访问名为profile
的类方法。现在,has_one
(和朋友)实际上在类的实例上建立关系,因此您可以像@user.profile
一样使用它。
答案 1 :(得分:1)
Account::User.profile
不应该有用。你可以这样做:
@user = Account::User.first
@profile = @user.profile