class Hoge < ApplicationRecord
before_save :arrange_bed_number
def self.bed_numbers
{
bed_number_1: 1,
bed_number_2: 2,
bed_number_3: 4,
}
end
attr_accessor *bed_numbers.keys
bed_numbers.each do |key, value|
define_method "#{key}?" do
value & bed_number.to_i != 0
end
end
private
def arrange_bed_number
self.bed_number = self.class.bed_numbers.keys.sum {|key| send(key).to_i}
end
end
<%= simple_form_for(@hoge) do |f| %>
<%= f.error_notification %>
<%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
<div class="form-inputs">
<%= f.input :bed_number %>
<%= f.input :bed_number_1, as: :boolean, checked_value: @hoge.class.bed_numbers[:bed_number_1], unchecked_value: 0, input_html: { checked: @hoge.bed_number_1? } %>
<%= f.input :bed_number_2, as: :boolean, checked_value: @hoge.class.bed_numbers[:bed_number_2], unchecked_value: 0, input_html: { checked: @hoge.bed_number_2? } %>
<%= f.input :bed_number_3, as: :boolean, checked_value: @hoge.class.bed_numbers[:bed_number_3], unchecked_value: 0, input_html: { checked: @hoge.bed_number_3? } %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>