如何解决@ mymodel.user = current_user对我不起作用
|| 我遵循了这些问题(一个和两个),仅关于如何与当前用户一起调整我的方法,以便他们拥有特定的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
然后是Devise用户模型:
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
我尝试提交它,然后突然弹出:
ProductsController#create中的NoMethodError
undefined method `user=\' for nil:NilClass
我想念什么或做错什么?
提前致谢!
解决方法
您尝试在拥有产品之前分配@ product.user。首先在产品上查找您的内容,然后分配用户。
@product = Product.find(params[:id])
@product.user = current_user
对于除了将您的产品限制为current_user的创建之外的其他操作,您可以执行类似的操作(假设您在User
模型中设置了has_many :products
关联。
@product = current_user.products.find(params[:id])
这样会将查找限制为仅具有user_id等于current_user的那些产品。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。