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)'のように 'String'を返すことはできません。値を変更する必要がある場合は、sendメソッド 'week.send("#{dayname} = "、...)の中で送る必要があります。 –