0
下面的问题是关于选择“attr_accessor”为对象启用的属性。例如:访问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"
我的问题:如何通过使用一个变量从一个循环选择attr_accessors?在下面的情况下,我会使用dayname
来选择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>
提前感谢!
也许使用符号的数组'[:周一,...]'然后在块'一周.send(dayname)= ...'? –
@ sagarpandya82你可以像这样使用它'week.send(dayname)'return'String'。如果您需要修改值,您必须在发送方法'week.send(“#{dayname} =”,...)内发送它' –