Почему столбец user_id базы данных не заполняется?

У меня есть таблица в базе данных под названием pcomment. Каждый комментарий принадлежит покупке. У покупки много комментариев. кроме того, у каждого пользователя есть_множество комментариев, а каждый комментарий принадлежит пользователю. В базе данных таблица pcomments имеет id / user_id / Purchase_id / body / created_at / updated_at

Все заполняется правильно, кроме user_id всегда пусто. Я хочу, чтобы он был заполнен user_id текущего вошедшего в систему пользователя (то есть того, кто создает pcomment.) И user_id, и pcomment_id индексируются в таблице с помощью add_index (во время миграции)

Вот форма для комментария

  <%= form_for([purchase, purchase.pcomments.build]) do |f| %>

    <div class="field">
      <h4>What deal are you offering?</h4>
      <%= f.text_field :body %>


    </div>


  <% end %>

Вот файл pcomments_controller.rb

class PcommentsController < ApplicationController
  before_filter :signed_in_user
  def create
    @purchase = Purchase.find(params[:purchase_id])
    @pcomment = @purchase.pcomments.build(params[:pcomment])

    @pcomment.purchase = @purchase

    if @pcomment.save
       flash[:success] = "Offer submited!"
       redirect_to :back
    else
      render 'shared/_pcomment_form'
    end
  end

  def new
@pcomment=purchase.pcomments.new

  end


end

Если вам нужно больше моего кода, его можно найти по адресу https://github.com/tradespring1/tradespring/.


person klondike-5-3226    schedule 13.10.2012    source источник


Ответы (1)


Вероятно, это не лучший способ сделать это, но если вы определили метод "current_user" или используете devise, вы можете просто поместить @ pcomment.user_id = current_user.id прямо перед @ pcomment.save

person Abram    schedule 13.10.2012
comment
ни за что. Я пытаюсь исправить это более 20 часов. Наконец-то твой способ сработал. Я действительно ценю это - person klondike-5-3226; 13.10.2012
comment
Рад, что помог. Как я уже сказал, это, вероятно, не лучший способ, но он будет работать ... Вероятно, вам нужно взглянуть на свои ассоциации и т.д., чтобы понять, почему user_id не появляется при сборке. - person Abram; 14.10.2012