Параметры доступа внутри модели rails 5

#ruby-on-rails

#ruby-on-rails

Вопрос:

Код выглядит следующим образом

  def update
    # params = {"from_zip"=>"28803", "lane_week_day_names"=>["Wednesday", "Monday"]}
    @lane.assign_attributes(params)
    
    return unless @lane.valid?

    # rest of logic
  end
  

Модель определяется следующим образом

 validate :duplicate_lane
has_many :lane_week_days

 def lane_week_day_names
    lane_week_days.map(amp;:day)
 end

 def lane_week_day_names=(daynames)
    Date::DAYNAMES.each do |dayname|
      existing = lane_week_days.find { |week_day| week_day.day == dayname }
      if daynames.include?(dayname)
        lane_week_days.build(day: dayname) if existing.blank?
      else
        existingamp;.mark_for_destruction
      end
   end
 end
  

Проверка модели определяется следующим образом

 def duplicate_lane
   #need to get lane_week_day_names form the params
   #compare lane_week_day_names from the params with existing records

    errors.add(:base, "Invalid")
  end
  

Мне нужно получить доступ к lane_week_day_names, который доступен в параметрах, для доступа внутри модели. Есть идеи о том, как этого добиться?

Ответ №1:

вы можете использовать это, но вам нужно изменить имена параметров на другое имя, потому что у вас есть метод с тем же именем.

 # app/models/lane.rb

attr_accessor :another_params_name

def duplicate_lane
  self.another_params_name # you'll get the value here.
end
  

Спасибо 🙂