我有一个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
,也不知道如何根据其“子”表的内容来查询用户。我不想每次都检查配置文件类型,然后根据它查找不同的内容。可以给这些字段起个别名吗?无论类型如何,我都可以做些什么来获取它们的字段? 最佳答案
class Player < ActiveRecord::Base
alias_attribute :name, :column_name
end
关于mysql - Rails别名,用于多态关联上的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39669457/