Ruby on rails @mymodel.user=当前用户不为我工作
我回答了以下问题(和),即如何仅针对当前用户调整我的方法,以便他们有特定的用户id来编辑、更新、创建和销毁他们的产品 这是我的密码: 我的迁移: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 =>
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])