1
我那裏有使用多態關聯的多種類型用戶的Rails應用程序,就像這樣: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數據庫。這很容易,但現在我想要一個返回所有帖子的查詢,以及寫它的玩家或教練的名字。或者根據這些相同的名稱字段查詢用戶,以便能夠進行名稱搜索並獲取userId。
由於名稱列具有不同的標題,因此我不能僅僅執行User.profile.name
,也不知道根據其「子」表的內容來查詢用戶的任何體面的方式。我不想每次都檢查profile_type,然後根據它查找不同的東西。是否有可能給這些領域別名或什麼?我可以做什麼來獲得他們的領域,無論類型?
這似乎很有用,謝謝。但是,如果我使用相同的別名命名'coachName'和'playerName',我可以使用別名進行查詢,它會將它們視爲相同嗎?我如何使用它來尋找類似'給我所有用戶的profile.name =「xx」'? –
@ChibiCanton你有工作嗎? –
我想這已經夠好了,最終得到了我想要的結果。接受答案,謝謝! –