Ruby on rails 在模型中使用实例变量
我想在创建时使用一些变量实例化一场战斗,这些变量可以在不访问数据库的情况下进行操作,然后首先在完成所有方法调用和计算后,将战斗结果保存到数据库中。我希望player方法返回在回调中创建的排序数组,但目前它只返回nilRuby on rails 在模型中使用实例变量,ruby-on-rails,activerecord,ruby-on-rails-4,Ruby On Rails,Activerecord,Ruby On Rails 4,我想在创建时使用一些变量实例化一场战斗,这些变量可以在不访问数据库的情况下进行操作,然后首先在完成所有方法调用和计算后,将战斗结果保存到数据库中。我希望player方法返回在回调中创建的排序数组,但目前它只返回nil class Battle < ActiveRecord::Base after_create do @battlelog = "" @field = [] @conditions = [] @player = sort_
class Battle < ActiveRecord::Base
after_create do
@battlelog = ""
@field = []
@conditions = []
@player = sort_by_initiative(action.character.army.members.map{ |m| [m.unit, m.amount]})
@computer = sort_by_initiative(action.instance.members.map{ |m| [m.unit, m.amount]})
end
# Associations
belongs_to :action
def sort_by_initiative(array)
array.sort { |a, b| b.first.initiative <=> a.first.initiative }
end
def player
@player
end
我想您正在寻找attr_accessor:player,这是Ruby,更多信息请参见Ruby类,它在模型实例上创建了一个可访问的属性read和write。属性读取器:玩家会给你一个只读属性,如果该属性是由内部操作设置的,则使用该属性。然后,你可以在这场职业战中调用这个玩家作为职业战的一个实例。请记住,如果您调用其他控制器操作或呈现新视图,这些属性通常不会持久存在,除非您有办法永久存储它们。尝试添加属性可访问:战斗模型中的玩家不这样认为,attr在rails 4中被弃用,并产生一个错误RuntimeError:attr\u accessible从rails提取到gem中。请为paramsstrong_参数使用新的推荐保护模型,或将受保护的_属性添加到GEM文件中以使用旧的保护模型。