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} =」,...)內發送它' –