Ruby on rails Rails 4.2.6向activerecord元素添加额外属性
我希望在查询结果中添加额外字段,而不必首先转换为JSON 我有3个模型Ruby on rails Rails 4.2.6向activerecord元素添加额外属性,ruby-on-rails,ruby-on-rails-4,activerecord,model,Ruby On Rails,Ruby On Rails 4,Activerecord,Model,我希望在查询结果中添加额外字段,而不必首先转换为JSON 我有3个模型团队,锦标赛和比赛,它们之间的关系如下: class Match < ActiveRecord::Base belongs_to :homeTeam, class_name: "Team", foreign_key: "localTeam" belongs_to :awayTeam, class_name: "Team", foreign_key: "visitorTeam" class Team <
团队
,锦标赛
和比赛
,它们之间的关系如下:
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"
但我得到一个错误:ActiveModel::MissingAttributeError:无法写入未知属性“local\u team\u name”
如何才能将
Team
中的额外字段添加到我的ActiveRecord::Associations::CollectionProxy
返回中的Match
类元素中?请记住,Team.logo
是一个函数,而不是一个属性。您可以在团队模型中使用attr\u访问器并在其中存储值。它创建了一个数据库中不存在的虚拟字段,但您可以使用match.homeTeam访问它
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