Я создал таблицу с именем activities_dates
, в которой я храню события activities
через отношение has_many
. У меня получилось несколько работать, потому что я могу получить значения, но сохраняя их, я работаю в NameError (uninitialized constant ActivityDate::Activities):
Миграция:
create_table :activities_dates do |t|
t.references :activities, foreign_key: true, index: true
t.date :event_date
t.timestamps
t.datetime :deleted_at, index: true
end
Модель:
activity.rb
class Activity < ApplicationRecord
has_many :activities_dates, :foreign_key => "activities_id", :class_name => "ActivityDate"
activity_date.rb
class ActivityDate < ApplicationRecord
belongs_to :activities
acts_as_paranoid
self.table_name = "activities_dates"
end
В своей форме я передаю массив recurring_event_date
, а затем выполняю для каждого оператора их создание. Здесь происходит фактическая «ошибка имени».
Форма: (У меня есть функция Javascript, которая добавляет несколько повторяющихся входов событий, следовательно, массив)
<% @activity.activities_dates.each_with_index do |event, idx| %>
<div class="form-group classes-field-one-time date-field">
<input class="form-control" type="date" name="activity[recurring_event_date][]" id="activity_event_date" value="<%= event.event_date %>">
<button class="remove-recurring-date btn-danger"> X </button>
</div>
<% end %>
Activity Controller @ Функция обновления
def update
if can? :update @activity
respond_do |format|
if @activity.update(activity_params.except(:recurring_event_date))
activity_params[:recurring_event_date].each do |event|
@activity.activities_dates.create(:event_date => event) #ERROR HERE
end
Я считаю, что некоторые соглашения об именах неверны, потому что я хочу сохранить их с помощью @activity model