Ruby on rails 使用变量访问attr_访问器属性

Ruby on rails 使用变量访问attr_访问器属性,ruby-on-rails,ruby,attr-accessor,Ruby On Rails,Ruby,Attr Accessor,下面的问题是关于为对象选择attr_访问器启用的属性。例如: class Openhour < ActiveRecord::Base belongs_to :shop attr_accessor :monday, :tuesday, :wednesday, :thursday, :friday, :saturday, :sunday end 我的问题:如何使用循环中的变量来选择attr_访问器?在下面的例子中,我将使用dayname来选择attr_访问器 然而,这将导

下面的问题是关于为对象选择attr_访问器启用的属性。例如:

class Openhour < ActiveRecord::Base

  belongs_to :shop    
  attr_accessor :monday, :tuesday, :wednesday, :thursday, :friday, :saturday, :sunday

end
我的问题:如何使用循环中的变量来选择attr_访问器?在下面的例子中,我将使用dayname来选择attr_访问器

然而,这将导致

*** NoMethodError Exception: undefined method `dayname' for #<Model>
提前谢谢

您可以使用

 week.send("#{dayname}=", schedule.day == dayname_index ? "Open" : "Closed")
或者您可以像使用实例变量一样使用它


可能会使用符号数组[:monday,…],然后在块周中。senddayname=…?@sagarpandya82不能像本周那样使用它。senddayname返回字符串。若需要修改该值,则必须在send方法week内发送它。send{dayname}=。。。
*** NoMethodError Exception: undefined method `dayname' for #<Model>
 week.send("#{dayname}=", schedule.day == dayname_index ? "Open" : "Closed")
week.instance_variable_set("@#{dayname}", schedule.day == dayname_index ? "Open" : "Closed")