我希望在不先转换为JSON的情况下为查询结果添加额外的字段。
我有3个模型team
,tournament
和match
,具有以下关系:
class Match < ActiveRecord::Base
belongs_to :homeTeam, class_name: "Team", foreign_key: "localTeam"
belongs_to :awayTeam, class_name: "Team", foreign_key: "visitorTeam"
class Team < ActiveRecord::Base
has_many :local_matches, class_name: "Match", foreign_key: "localTeam"
has_many :visitor_matches, class_name: "Match", foreign_key: "visitorTeam"
class Tournament < ActiveRecord::Base
has_many :matches, class_name:"Match",foreign_key: "tournamentId"
在Tournament
类中,我正在尝试添加一个函数,该函数将为我提供tournamet中所有匹配项的列表,但对于每个匹配项,它应包含来自Team
s的一些数据参与其中(homeTeam和awayTeam)。
我正在尝试以下方法:
def tournament_matches
matches= self.matches
matches.each do |match|
match[:home_team_logo] = match.homeTeam.logo //add this field
match[:visitor_team_logo] = match.awayTeam.logo //add this field
end
matches.group_by(:round)
end
但是我收到了一个错误:
ActiveModel::MissingAttributeError: can't write unknown attribute 'local_team_name'
我可以执行哪些操作,以便在返回时将Team
中的额外字段添加到ActiveRecord::Associations::CollectionProxy
Match
类元素中?请记住,Team.logo
是一个函数,而不是一个属性。
答案 0 :(得分:1)
您可以在Team Model中使用attr_accessor并在其中存储值。它创建了一个虚拟字段,该字段在数据库中不存在,但您可以使用match.homeTeam.<attribute_name>
访问它。你可以在这里阅读关于attr_accessor的信息: