У меня есть Table1 с атрибутом attribute1, который является массивом целых чисел. Мой контроллер допускает одну вставку за раз. Итак, в контроллере:
def add_attribute1_item
table1 = Table1.find(params[:id])
table1.attribute1 << add_params[:attribute1_item]
table1.save!
render json: table1
rescue
render_errors_for(table1)
end
Я хочу проверить это значение attribute1_item, игнорируя старые значения, которые были сохранены в массиве attribute1, например, если table1.attribute1 содержит 99, и я вызываю контроллер add_attribute1_item для добавления 100, я только хочу проверить, является ли 100 действительным или нет, игнорируя 99.
class Task < ApplicationRecord
.
.
.
validate :attribute1_item_is_valid, if: -> { attribute1.present? }
.
.
.
def attribute1_item_is_valid
# validate the item by accessing attribute1
end
Я не уверен с этим подходом, потому что, когда я обращаюсь к attribute1 в attribute1_item_is_valid, это новый массив вместо нового элемента , Достаточно ли хорош этот подход, вызывая attribute1.last (), или есть более правильный метод? спасибо