0

我正在开发一个微型社交网络,我有两种不同的帐户类型,用户可以是个人资料或页面。

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

但它不起作用。

非常感谢任何帮助。非常感谢!

4

1 回答 1

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)any id。然后,您可以这样做,假设a'saccount_typeprofile

a.get_info(:name) # => a.profile.name

于 2013-02-12T23:13:12.973 回答