我的rails应用程序中有两个模型:Mem
和Team
。一个team
有很多mems
。
众所周知,如果我只想在id
中获取字段team
,我会写:
Team.select('id')
如果我想获得team
的{{1}},我会写:
mem
现在我想获得团队ID和名称,所以我写道:
Mem.find(1).team
我收到了错误。
我该如何正确地做到这一点?
答案 0 :(得分:1)
team = Mem.find(1).team.select('id,name')
team_id = team.id
team_name = team.name
你可能想看到这个 Ruby rails - select only few columns from the data base
答案 1 :(得分:0)
您将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
检索您的团队成员,另一个查询团队ID是使用您应该设置的rails关联自动执行的。