我正在开发一个微型社交网络,我有两种不同的帐户类型,用户可以是个人资料或页面。
class User < ActiveRecord::Base
has_one :profile
has_one :page
end
现在,当我想显示用户名时,我会执行current_user.profile.name,但如果用户是“页面”,我显然会收到错误。
所以我试过这个
private
def current_user
if session[:user_id]
@current_user = User.find(session[:user_id])
if @current_user.account_type == 'profile'
@current_user.profile = @current_user.page
end
end
end
但它不起作用。
非常感谢任何帮助。非常感谢!
答案 0 :(得分:0)
我不确定你在问什么,但你可以为User
模型添加一个方法来处理这个问题:
class User < ActiveRecord::Base
has_one :profile
has_one :page
def name
if self.account_type == 'profile'
return self.profile.name
return <whatever for page>
end
end
修改强>
对于多个字段,为什么不使用User
的方法:
class User < ActiveRecord::Base
# other code removed
def get_info(method, *args)
if self.account_type == 'profile'
return self.profile.send(method, *args)
end
self.page.send(method, *args)
end
end
因此,要使用此功能,请说我们a = User.find(:id)
包含任何id
。然后,您可以这样做,假设a
的{{1}}是account_type
:
profile