我通過Rails教程(http://guides.rubyonrails.org/getting_started.html)去創造一個物品模型。我沒有將評論部分添加到我的應用程序中。我設立了Devise來處理用戶。不能使後在文章的時候我添加belongs_to的:用戶/app/models/article.rb
這種運作良好,用戶可以創建,編輯和破壞對方的職位。我現在想讓用戶只編輯或刪除自己的文章帖子。
我做了一些改變,我得到一個錯誤「用戶必須存在」當任何用戶嘗試創建文章後。我注意到,添加belongs_to:用戶是什麼造成這個錯誤。有沒有辦法來解決這個問題?
我添加了一個參考和外鍵:
rails g migration AddUserToUploads user:references
那麼我確信我這個遷移:
class AddUserToArticles < ActiveRecord::Migration[5.0]
def change
add_reference :articles, :user, foreign_key: true
end
end
我說'belongs_to的:用戶到應用程序/模型/ article.rb所以它看起來像:
class Article < ApplicationRecord
validates :title, presence: true,
length: { minimum: 5 }
belongs_to :user
end
我的應用程序/模型/ user.rb看起來像現在這樣:
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :lockable, :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :articles
end
我暫時不能在我的意見的任何用戶限制。
我articles_controller.rb設置是這樣的:
class ArticlesController < ApplicationController
def index
@articles = Article.all
if params[:search]
@articles = Article.search(params[:search]).order("created_at DESC")
else
@articles = Article.all.order('created_at DESC')
end
end
def show
@article = Article.find(params[:id])
end
def new
@article = Article.new
end
def edit
@article = Article.find(params[:id])
end
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render 'new'
end
end
def update
@article = Article.find(params[:id])
if @article.update(article_params)
redirect_to @article
else
render 'edit'
end
end
def destroy
@article = Article.find(params[:id])
@article.destroy
redirect_to articles_path
end
private
def article_params
params.require(:article).permit(:title, :text, :description, :keyword, :syntax, :programlang)
end
我試圖改變的破壞方法這一點,但它仍然沒有做任何事情:
def destroy
@article = Article.find(params[:id])
if user_signed_in? && current_user.articles.exists?(@article.id)
@article.destroy
else
redirect_to articles_path
end
end
我缺少的東西?我需要對我的文章做些什麼改變?
用戶可以創建一個沒有被登錄的文章? –
不,我仍然有一些事情受到限制。設計是處理認證。當我添加belongs_to:user時,我發現問題發生。 –
當您嘗試在「Article」中維護關聯時,您在「上傳」中添加了參考。你的'article'實際上是否有user_id字段? – kiddorails