Rails 5 необязательных ассоциаций has_many - PullRequest
0 голосов
/ 14 ноября 2018

приложение / модели / donor.rb

has_many :donor_relationships
accepts_nested_attributes_for :donor_relationships, :allow_destroy => true

приложение / модели / donor_relationship.rb

belongs_to :donor, optional: true

Я использую f.fields_for в донорской форме и создаю donor и donor_relationships оба.

donor_relationships не требуется обязательно. Проблема, с которой я сталкиваюсь, заключается в том, что если я не добавляю donor_relationships, тогда создается пустая запись donor_relationship с идентификатором донора. В рельсах 4 не так бывает.

Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

acceptpts_nested_attributes_for игнорировать пустые значения

Вы можете добавить условное reject_if к методу accepts_nested_attributes.Предполагая, что у вашего donor_relationship есть атрибут name (вы можете использовать значение relations_id или любой другой атрибут, имеющий смысл):

accepts_nested_attributes_for :donor_relationships,
                              :allow_destroy => true,
                              :reject_if => lambda { |c| c[:name].blank? }`
0 голосов
/ 14 ноября 2018

Вы можете использовать reject_if параметр:

accepts_nested_attributes_for :donor_relationships, 
  allow_destroy: true,
  reject_if: proc { |attributes| attributes['important_field'].blank? }
...