У меня есть довольно простой набор моделей, где «Project» имеет один «Владелец». Я бы хотел, чтобы пользователи вводили имя владельца при создании нового проекта. Если владелец не существует, необходимо создать новый. Есть ли хороший способ сделать это? Я думал об использовании attr_accessor
и before_validation
, однако, похоже, это противоречило бы отношениям. Есть идеи? Благодаря!Разрешить Active Record Model Assign Association с помощью String
ответ
Используйте что-то другое, чем имя вашего отношения ... owner_name
должно быть хорошо. Затем напишите необходимый метод before_validation
.
Я хотел бы использовать что-то вдоль линий этого в контроллере:
def update
Project.transaction do
@project.owner = Owner.find_or_create_by_name(params[:project].delete(:owner_name))
@project.attributes = params[:project]
@project.save!
end
end
Привет, Джереми. Это довольно близко к тому, что у меня есть в настоящее время. Просто пытаюсь выяснить, существует ли хороший способ «сушить» код (имел тот же код для обновления и создания, а также в нескольких других местах вокруг приложения и чувствовал, что он должен быть в модели). –
В качестве альтернативы вы можете определить это в модели 'def owner_name = (owner_name); owner = Owner.find_or_create_by_name (owner_name); end ", тогда вам нужно будет использовать поле формы с' project [имя_владельца] 'и в любом действии контроллера' update_attributes (params [: project]) 'должно работать шарм. – Jeremy
- 1. Rails3 Active Record Association
- 2. Rails 5 Active Record Association
- 3. Array to Active Record Model
- 4. Как ReactJS обрабатывает Rails Active Record Association
- 5. Rails Active record association методом экземпляра
- 6. Не удалось создать Active Record Association
- 7. Active Record Association - определение устаревшего состояния
- 8. Как разрешить Active record error
- 9. Eager Load Active Record Association с WHERE on Join
- 10. Ошибка Rails в Active Record Model
- 11. Active Record: JSON Запрос
- 12. Ruby Active Record Association - Получение столбцов из дочернего стола
- 13. Sails js model association
- 14. юй запрос Active Record
- 15. ruby active model serializer association on version> 0.8.0
- 16. Рельсов Active Record присоединиться запрос
- 17. PHP Active Record Memcached
- 18. Rails Model Association
- 19. Rails Model Association Confusion
- 20. CakePHP Model Extended Association
- 21. История аудита Active Record
- 22. Завершена Active Record
- 23. Rails active record model relationship - одна модель из трех моделей
- 24. Yii Framework 2.0 Active Record
- 25. Проблема с MySQL Active Record
- 26. Рельсы Active Record начинается с
- 27. Проверка подлинности HQL на домен с помощью Active Record Active Record
- 28. Active Record без Rails: Как передать Произвольный хэш Active Record
- 29. Как использовать ассоциации Active Record с ElasticSearch?
- 30. Active Jdbc Association не работает
Hi Fabio. Спасибо за ответ. Я закончил небольшую настройку (нашел это: http://railscasts.com/episodes/57-create-model-through-text-field). Мой единственный вопрос, который остается, заключается в добавлении валидаций в поля 'attr_accessor', но я уверен, что что-то придумаю. –
Приятно, что Railscast может помочь многим людям с аналогичными проблемами. –