Я следовал за этими вопросами ( one и two ) о том, как настроить мои методы только для текущего пользователя, чтобы у них был определенный user_id для редактирования, обновления, создания и уничтожения их продукты.
Вот мой код:
Моя миграция:
class CreateProducts < ActiveRecord::Migration
def self.up
create_table :products do |t|
t.string :name
t.date :date
t.decimal :price, :default => 0, :precision => 10, :scale => 2
t.integer :user_id
t.float :latitude
t.float :longitude
Контроллер:
class ProductsController < ApplicationController
before_filter :authenticate_user!
def index
@products = Product.all
def show
@product = Product.find(params[:id])
def new
@product = Product.new
def edit
@product.user = current_user
@product = Product.find(params[:id])
end
def create
@product.user = current_user
@product = Product.new(params[:product])
def update
@product.user = current_user
@product = Product.find(params[:id])
def destroy
@product.user = current_user
@product = Product.find(params[:id])
@product.destroy
Модель продукта:
class Product < ActiveRecord::Base
attr_accessible :name, :date, :price, :tag_list
belongs_to :user
end
затем Модель пользователя для разработки:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
has_many :products, :dependent => :destroy
Я пытаюсь отправить его, а затем внезапно появляется это сообщение:
NoMethodError в ProductsController # create
undefined method `user=' for nil:NilClass
Что я пропускаю или делаю неправильно?
Заранее спасибо!