我有一个rails应用程序,其中有多种类型的用户使用多态关联,如下所示:
用户:
class User < ActiveRecord::Base
belongs_to :profile, :polymorphic => true
has_many :posts
end
播放器:
class Player < ActiveRecord::Base
has_one :user, as: :profile
end
教练:
class Coach < ActiveRecord::Base
has_one :user, as: :profile
端
这些表的模式,如下所示:
User(userId: integer, username: string, created_at: datetime, updated_at: datetime, profile_id: integer, profile_type: string)
Player(playerId: integer, playerName: string, created_at: datetime, updated_at: datetime)
Coach(coachId: integer, coachName: string, created_at: datetime, updated_at: datetime)
Post(postId: integer, userId: integer, content: string ...)
播放器和教练可以编写帖子,这些帖子将使用userId添加到数据库中。这很容易,但现在我想要一个返回所有帖子的查询,以及编写它的玩家或教练的名字。或者根据这些相同的名称字段查询用户,以便能够进行名称搜索并获取userId。
由于名称列具有不同的标题,我不能只做User.profile.name
,也不知道根据其“子”表的内容查询用户的任何体面方式。我不想每次都检查profile_type,然后根据它查找不同的东西。是否可以给这些字段添加别名或其他内容?无论类型如何,我该怎样做才能得到他们的字段?
答案 0 :(得分:1)
class Player < ActiveRecord::Base
alias_attribute :name, :column_name
end