Railsで掲載期間の有無を設定する実装方法
チェックボックスにチェックを入れた時はずっと掲載し続ける場合の実装方法
check_boxは引数をつけなかった場合、チェックした場合は1を、つけない場合は0が値として渡される。
form.html.erb
<%= form.check_box :no_expiration %>
アクセスメソッドを定義する。 それなら、attr_accessor使えばいいじゃんと思うけど、今回はただ、値を読みだしたり、書き出したりするのでは、事足りないので独自に定義する必要がある。 check_boxにチェックがつけられていた場合、つまり1が渡された場合に、@no_expirationをtrueにして、そうでなければfalseにする。 メソッドの中身を普段なら@no_expiration = valだけにするが、valの値をそのまま代入するのではなく、今回はtrueかfalseを代入したいので、独自に定義している。 model.rb
def no_expiration=(val) @no_expiration = val.in?([true, 1, "1"]) end
expired_atの有無によって、falseかtrueを返す。 model.rb
def no_expiration expired_at.blank? end