Создание ассоциации путем определения метода - PullRequest
0 голосов
/ 29 апреля 2011

Привет, у меня проблемы с определением этой ассоциации как has_many, что я хотел бы сделать для того, чтобы заставить acceptpts_nested_attributes_for работать.

def work_days
  work_days = WorkDay.user_id_equals(self.user_id).company_id_equals(self.company_id)
end

accepts_nested_attributes_for :work_days

Что было бы хорошим решением?Могу ли я так или иначе сказать, что это ассоциация?

- Rails 3.0.7

1 Ответ

1 голос
/ 29 апреля 2011

Во-первых, я написал бы метод work_days следующим образом:

def work_days
  WorkDay.where(:user_id => user_id, :company_id => company_id)
end

Далее accepts_nested_attributes_for действительно только для реальных ассоциаций, и поэтому я бы определил такой метод:

def work_days=(work_day_params)
  # iterate over work_day_params and define new work day objects as required
end

(возможно, имя метода неверно)

В вашей форме у вас будет что-то вроде этого:

<% f.fields_for :work_days do |work_day| %>
  <%= render :partial => "work_days/fields", :locals => { :f => work_day } %>
<% end %>

В этой части у вас будет все необходимое для рабочего дня. Как только эта форма отправлена, параметры должны быть отправлены на контроллер как params[:nest][:work_days], и с помощью метода work_days=, определенного в вашей модели, он должен принять их и создать их так же, как accepts_nested_attributes_for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...