Для начала у меня есть 3 модели:
Location has_many :products
User has_many :products
Products belongs_to :user, :location
Теперь у меня есть вложенная форма:
<%= nested_form_for @location do |f| %>
<%= f.error_messages %>
.............
<% f.fields_for :products do |product| %>
Я пытался найти правильный способ, чтобы моя ассоциация current_user моглаработать и вдруг по чистой случайности нашел правильный ответ в этом вопросе, Нулевой внешний ключ во вложенной форме .
Я поместил этот кусок простого кода в свой контроллер, и он, наконец, дал мойпродукты к текущему user_id:
@location.products.first.user = current_user
full -
def create
@location = Location.new(params[:location])
@location.products.first.user = current_user
end
Моя конечная цель достигнута.Пользователи имеют свои собственные продукты, созданные в определенном месте.Единственное, чего я не понимаю, это то, почему first.user = current_user
работает, а что-то простое, например location = @location.current_user.products.build
, - нет.Может ли кто-нибудь дать мне отличное объяснение того, что здесь происходит и что означает первое?Это нормально иметь или это более безопасный / лучший способ?
Спасибо, я ценю это.