I've been playing with the models for a bit.
I am using devise
My schema:
  create_table "complaints", force: :cascade do |t|
    t.string   "title"
    t.text     "complaint_info"
    t.datetime "created_at",     null: false
    t.datetime "updated_at",     null: false
    t.integer  "user_id"
  end
  add_index "complaints", ["user_id"], name: "index_complaints_on_user_id", using: :btree
  create_table "users", force: :cascade do |t|
    ...
  end
Complaint model:
class Complaint < ActiveRecord::Base
  belongs_to :user
  validates :title, presence: true
end
Users model:
class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  has_many :complaints
end
I was assuming this was the setup for rails to assume the current_user id goes inside the user_id but it's not storing it, I have to do it manually in the controller like this:
def create
    @complaint = Complaint.new(complaint_params) do |c|
      c.user_id = current_user.id
    end
    if @complaint.save
      redirect_to dashboard_complaint_path(@complaint)
    else
      render 'new'
    end
  end
private
  def complaint_params
    params.require(:complaint).permit(:title, :complaint_info)
  end
Is this the right way to do it? thanks.
 
    