Ruby on rails 如何初始化对象的属性
我有一个公制等级:Ruby on rails 如何初始化对象的属性,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个公制等级: class Metric < ApplicationController attr_accessor :capability, :behavior def initialize(family_id) @capability = 5 end end 然后,我尝试使用以下方法获取capability属性: puts metrics.capability 但我有一个错误: NoMethodError Exception: private meth
class Metric < ApplicationController
attr_accessor :capability, :behavior
def initialize(family_id)
@capability = 5
end
end
然后,我尝试使用以下方法获取capability属性:
puts metrics.capability
但我有一个错误:
NoMethodError Exception: private method `capability' called for #<Metric:0xa7bb4b0 @capability=5>
NoMethodError异常:调用了私有方法'capability'#
我做错了什么?您不需要从
ApplicationController
继承。停止继承它,它将开始工作
如果要在所有操作中初始化该属性,则只需执行以下操作
class Metric
attr_accessor :capability, :behavior
def initialize(family_id)
@capability = 5
end
end
class ApplicationController < ActionController::Base
before_action :initialize_metric_attribute
def initialize_metric_attribute
@capability = Metric.new(10)
end
end
类度量
属性访问器:功能,:行为
def初始化(族id)
@能力=5
结束
结束
类ApplicationController
根据评论进行编辑:
您正在继承自ApplicationController
。只有当您想编写一些操作时,才应该继承它。要编写自定义类
,无需执行任何操作。如果需要,您可以继承ActiveRecord::Base
由于在类metric
中有initialize
方法,您甚至不需要AR
为什么有效
我们刚刚使用了before\u filter
回调函数来初始化属性。其简单的Ruby和Rails概念 您确定ApplicationController
没有这样名称的方法吗?可能是有原因的。如果您有任何问题,请告诉我。
class Metric
attr_accessor :capability, :behavior
def initialize(family_id)
@capability = 5
end
end
class ApplicationController < ActionController::Base
before_action :initialize_metric_attribute
def initialize_metric_attribute
@capability = Metric.new(10)
end
end