Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4.2.6向activerecord元素添加额外属性_Ruby On Rails_Ruby On Rails 4_Activerecord_Model - Fatal编程技术网

Ruby on rails Rails 4.2.6向activerecord元素添加额外属性

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 <

我希望在查询结果中添加额外字段,而不必首先转换为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 < 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