使用变量访问 attr_accessor 个属性
Accessing attr_accessor attributes with variable
下面的问题是关于 selecting 由 "attr_accessor" 为对象启用的属性。示例:
class Openhour < ActiveRecord::Base
belongs_to :shop
attr_accessor :monday, :tuesday, :wednesday, :thursday, :friday, :saturday, :sunday
end
这让我可以
week = Openhour.new
week.monday = "Open"
week.tuesday = "Closed"
我的问题:如何使用循环中的变量 select attr_accessors?在下面的情况下,我会使用 dayname
到 select attr_accessor
.
@schedules.each do |schedule|
%w(monday tuesday wednesday thursday friday saturday sunday).each_with_index do |dayname,dayname_index|
week.dayname = schedule.day == dayname_index ? "Open" : "Closed"
end
end
然而,这会导致
*** NoMethodError Exception: undefined method `dayname' for #<Model>
提前致谢!
你可以使用
week.send("#{dayname}=", schedule.day == dayname_index ? "Open" : "Closed")
或者您可以像 instance_variables
那样使用它
week.instance_variable_set("@#{dayname}", schedule.day == dayname_index ? "Open" : "Closed")
下面的问题是关于 selecting 由 "attr_accessor" 为对象启用的属性。示例:
class Openhour < ActiveRecord::Base
belongs_to :shop
attr_accessor :monday, :tuesday, :wednesday, :thursday, :friday, :saturday, :sunday
end
这让我可以
week = Openhour.new
week.monday = "Open"
week.tuesday = "Closed"
我的问题:如何使用循环中的变量 select attr_accessors?在下面的情况下,我会使用 dayname
到 select attr_accessor
.
@schedules.each do |schedule|
%w(monday tuesday wednesday thursday friday saturday sunday).each_with_index do |dayname,dayname_index|
week.dayname = schedule.day == dayname_index ? "Open" : "Closed"
end
end
然而,这会导致
*** NoMethodError Exception: undefined method `dayname' for #<Model>
提前致谢!
你可以使用
week.send("#{dayname}=", schedule.day == dayname_index ? "Open" : "Closed")
或者您可以像 instance_variables
week.instance_variable_set("@#{dayname}", schedule.day == dayname_index ? "Open" : "Closed")