У меня есть модель однонаправленных отношений между пользователями (у пользователей много отношений ), которые содержат идентификаторы двух заданных пользователей вместе с псевдонимом пользователя a для пользователя b. Я хочу использовать форму, позволяющую пользователям передавать адрес электронной почты -другого пользователя и псевдоним. Если пользователь с таким адресом электронной почты существует, создайте отношения между пользователями. Если ни один пользователь не соответствует, создайте нового «фантомного» пользователя с этим адресом электронной почты, а затем создайте отношения.
Я относительно новичок в рельсах и сначала наивно пытался использовать базовый:
= form_for @relationship do |f|
= f.label :email
= f.text_field :email
= f.label :nickname, "Nickname"
= f.text_field :nickname
= f.submit "Submit", class: "btn btn-large btn-primary"
Это не удается, потому что модель отношений не содержит атрибута электронной почты. Затем я попробовал следующее, думая, что это может сработать, потому что это не ссылалось напрямую на модель отношений.
= form_tag :controller => "relationships", :action => "create" do
= label :email
= text_field :email
= label :nickname, "Nickname"
= text_field :nickname
= submit "Submit", class: "btn btn-large btn-primary"
Но это выдает ошибку «неправильное количество аргументов (1 вместо 2 )»
Я мог бы добавить поле электронной почты в модель отношений, но оно не нужно, кроме тех случаев, когда я буду использовать его для поиска нужного пользователя. Мой план состоял в том, чтобы использовать значения электронной почты и псевдонима, переданные действию создания в контроллере отношений, либо для создания отношения, либо для создания нового пользователя, а затем отношения в зависимости от случая. Итак, как я могу передать произвольные значения действию контроллера?