【发布时间】:2015-09-15 06:06:45
【问题描述】:
我在user 和post 模型之间有1:N 关系。我想在post 模型中访问user_id。我通过访问current_user 进行了尝试,但它抛出了找不到current_user 变量。
我的 userModel 类:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :validatable
has_many :post
validates_format_of :email, with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
end
MyPostModel 类:
class Post < ActiveRecord::Base
belongs_to :user
before_create :fill_data
validates_presence_of :name, :message => 'Name field cannot be empty..'
def fill_data
self.is_delete = false
self.user_id = current_user # here I am getting the error
end
end
MyPostController 类
class PostController < ApplicationController
before_action :authenticate_user!
def index
@post = Post.all
end
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
if @post.save
redirect_to action: 'index'
else
render 'new'
end
end
.....
private
def post_params
params.require(:post).permit(:name,:user_id,:is_delete)
end
end
我可以访问 Post 控制器中的 before_action :authenticate_user!,但不能访问 post model 或 controller 中的 current_user。我在Post.fill_data. self.user_id 做错了什么?
其余代码工作正常,我可以在 sqlite3 数据库中看到 :name and :is_delete 的新条目(当我在 Post 类中评论 self.user_id 行时)。
编辑-1
我已经有 post 的迁移类
class CreatePosts < ActiveRecord::Migration
def change
create_table :posts do |t|
t.string :name
t.boolean :is_delete
t.references :user, index: true, foreign_key: true
t.timestamps null: false
end
end
end
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 model-view-controller devise controller