#ruby-on-rails #ruby #textarea #has-many
#ruby-on-rails #ruby #текстовое поле #имеет-много
Вопрос:
Привет, ребята, первый вопрос здесь.
У меня есть пара продуктов и пользователи, которые могут добавлять эти продукты в списки желаний. У пользователя может быть много списков желаний (для разных целей). Продукты можно добавлять в списки желаний, но при этом требуется дополнительная информация: вы должны указать количество определенного продукта. Эта логика используется при включении, которое имеет количество полей.
Class Wishlist
belongs_to :user # User class is irrelevant here
has_many :inclusions
has_many :products, :through => :inclusions
end
Class Product
has_many :inclusions
has_many :wishlists, :through => :inclusions
end
Class Inclusion
belongs_to :product
belongs_to :wishlist
end
Все это отлично работает, но теперь перейдем к настоящему вопросу.
Списки желаний следует редактировать с помощью текстовых областей. Синтаксис прост: количество productname.
Все пользователи используют этот синтаксис.
Например, редактирование списка пожеланий должно выглядеть следующим образом:
<textarea>
1 Bicycle
4 Shoe
1 Telephone
</textarea>
Когда форма отправлена, вся логика должна решаться за кулисами. Таким образом, если «1 телефон» отключен, включение должно быть уничтожено. Если строка добавлена или изменена, соответствующее включение должно быть создано или обновлено, чтобы база данных синхронизировалась с содержимым этой текстовой области.
Я искал высоко и низко, но не смог найти решение для этого. Заранее спасибо!
Ответ №1:
Это плохая идея, но ради того, чтобы вы могли учиться на своих собственных ошибках…
- Оберните свой метод установки атрибута textarea-data, чтобы включить функциональность в…
- Проанализируйте соответствующую информацию из каждой строки в текстовой области и…
- Вызовите исходный метод установки для каждого.
- Сделайте обратное для средства получения.
Ваши проверки, ассоциации и т.д. все по-прежнему работает, и ваша логика для обработки этого аккуратно упакована, так что вы можете легко выбросить ее позже, если / когда у вас возникнут проблемы.