У меня есть 2 модели (pass
и subscription
), 2 контроллера и 2 формы.Модели совместно используют таблицу базы данных.
Общая таблица passes
.Чтобы сообщить, является ли запись subscription
, существует столбец is_subscription
.Таким образом, у меня есть следующее для моей subscription
модели:
self.table_name = :passes
default_scope { where(is_subscription: true) }
validates :name, presence: true
Обратите внимание на проверку name
.
Форма subscription
:
<%= form_for(@subscription, html: {class: "my-class"}) do |f| %>
, который отображает:
<form class="form-horizontal" id="new_subscription" action="/subscriptions" accept-charset="UTF-8" method="post">
<input class="form-control" type="text" name="subscription[name]" id="subscription_name">
...
В контроллере:
def show
end
def new
@subscription = Subscription.new
end
def create
@subscription = current_user.company.passes.new(subscription_params)
if @subscription.save
redirect_to subscription_path(@subscription), notice: "Yay"
else
render :new
end
end
Все отлично работает.Но если я попытаюсь создать новую подписку и пропущу name
из формы - это вызовет проверку активной записи и ошибку.Форма перерисовывается и теперь изменилась:
<form class="form-horizontal" id="new_pass" action="/passes" accept-charset="UTF-8" method="post">
<input class="form-control" type="text" value="" name="pass[name]" id="pass_name">
...
Я попытался установить as: "subscription"
, который исправляет все, кроме действия.Если я установлю action:
, действие все равно будет отменено.
Буду признателен за понимание того, как лучше всего справиться с этим.К сожалению, у меня нет возможности изменить положение таблицы (т.е. использовать отдельные таблицы).