Ruby on rails @mymodel.user=当前用户不为我工作

Ruby on rails @mymodel.user=当前用户不为我工作,ruby-on-rails,devise,Ruby On Rails,Devise,我回答了以下问题(和),即如何仅针对当前用户调整我的方法,以便他们有特定的用户id来编辑、更新、创建和销毁他们的产品 这是我的密码: 我的迁移: class CreateProducts < ActiveRecord::Migration def self.up create_table :products do |t| t.string :name t.date :date t.decimal :price, :default =>

我回答了以下问题(和),即如何仅针对当前用户调整我的方法,以便他们有特定的用户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
我遗漏了什么或做错了什么?


提前谢谢

您试图在拥有产品之前分配@product.user。首先查找产品,然后分配用户

@product = Product.find(params[:id])
@product.user = current_user
对于要将产品限制为当前用户的“创建”以外的操作,您可以执行以下操作(假设您在
用户
模型中设置了\u many:products关联)

@product = current_user.products.find(params[:id])

这将限制查找仅限于那些用户id与当前用户相同的产品。

Oh wow不知道顺序是否重要!我认为所有操作都是同时生成的。这是可行的,我可以创建它,但我仍然可以像其他用户一样销毁和编辑其他用户的产品。如何更正此问题?请参阅我答案中的补充内容。
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
undefined method `user=' for nil:NilClass
@product = Product.find(params[:id])
@product.user = current_user
@product = current_user.products.find(params[:id])