如何将我登录的当前用户与我在创建时的帖子相关联?
我的帖子模型:
before_create :owner
belongs_to :user
def owner
self.user_id = current_user.id
end
Run Code Online (Sandbox Code Playgroud)
但是,因为我不能在模型中使用方法current_user,所以这种方法有效.
这是我的控制器:
class PostsController < ApplicationController
before_filter :authenticate_user!
# GET /posts
# GET /posts.xml
def index
@posts = Post.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @posts }
end
end
# GET /posts/1
# GET /posts/1.xml
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @post }
end
end
# GET /posts/new
# GET /posts/new.xml
def new …Run Code Online (Sandbox Code Playgroud) 我正在尝试在创建时向我的用户添加用户名.
在设计/注册/新我有:
<h2>Sign up</h2>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<p><%= f.label :username %><br />
<%= f.text_field :username %></p>
<p><%= f.label :email %><br />
<%= f.email_field :email %></p>
<p><%= f.label :password %><br />
<%= f.password_field :password %></p>
<p><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></p>
<p><%= f.submit "Sign up" %></p>
<% end %>
<%= render :partial => "devise/shared/links" %>
Run Code Online (Sandbox Code Playgroud)
问题是没有params[:username]发送到控制器,我在视图中收到以下错误:
ActiveRecord::StatementInvalid in Devise::RegistrationsController#create
Mysql::Error: Column 'username' cannot be null: …Run Code Online (Sandbox Code Playgroud)