我的rails应用程序中有两个模型:Mem
和Team
。一个team
具有多个mems
。
众所周知,如果我只想在team
中得到字段id
,我会写:
Team.select('id')
如果我想得到mem
的team
,我会写:
Mem.find(1).team
现在我想得到团队id和名称,所以我写:
Mem.find(1).team.select('id,name')
我弄错了。
我应该如何正确地执行此操作?
team = Mem.find(1).team.select('id,name')
team_id = team.id
team_name = team.name
你可能想看看这个Ruby rails-从数据库中只选择少数列
您将SQL查询与模型属性混淆了。Team.select('id')
是查询的第一部分,它将返回您要查找的任何团队的id。如果你想得到一个团队模型的id,你只需要写team.id
,所以你的代码应该是mem.team.id
,其中mem
是Mem
类的模型,team
是Team
类的模型。
让我来阐述一下。为了从数据库中检索模型,您需要一些模型特有的信息。我假设您将使用id
,但您可以使用任何属性或属性的组合。
让我们从数据库中检索我们的模型:
star_player = Mem.find('5')
team_id = star_player.team.id
执行了两个查询,一个使用find
检索您的团队成员,另一个使用您应该设置的rails关联自动执行检索团队id。