我有一个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 ...)

球员和教练可以写帖子,这些帖子将被添加到数据库中,并带有他们的用户名。这很简单,但是现在我想要一个返回所有帖子的查询,以及编写它的球员或教练的名字。或者基于这些相同的名称字段查询用户,以便能够执行名称搜索并获取用户ID。
由于name列有不同的标题,所以我不能只做User.profile.name,也不知道如何根据其“子”表的内容来查询用户。我不想每次都检查配置文件类型,然后根据它查找不同的内容。可以给这些字段起个别名吗?无论类型如何,我都可以做些什么来获取它们的字段?

最佳答案

看看alias_attribute

class Player < ActiveRecord::Base
  alias_attribute :name, :column_name
end

关于mysql - Rails别名,用于多态关联上的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39669457/

10-11 18:45