2014-10-16 85 views
0

我试图将User_id添加到创建的电影标题,以便我只能显示用户在其个人资料中创建的电影标题。将活动的User_id添加到标题

我已经做了一些事情,但当我创建一个新的标题(作为登录用户),然后检查轨道控制台,看看该电影是否有User_id它说“无”。所以看起来我做错了什么或忘了做什么。

这是我的架构,我已经有一个电影模式,所以我用rails g migration addUserIdToMovies user_id:integer到USER_ID添加到电影模式

ActiveRecord::Schema.define(version: 20141016152516) do 

    create_table "movies", force: true do |t| 
    t.string "title" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.integer "user_id" 
    end 

    create_table "users", force: true do |t| 
    t.string "name" 
    t.string "email" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.string "password_digest" 
    t.string "remember_digest" 
    end 

    add_index "users", ["email"], name: "index_users_on_email", unique: true 

end 

我已经添加了的has_many和belongs_to的对用户和电影模式

用户模型

class User < ActiveRecord::Base 

    has_many :movies 

电影模式

class Movie < ActiveRecord::Base 

    belongs_to :users 

问题是,当我以登录用户的身份发布新电影时,为什么我没有在我的电影列表User_id中收到User_id?

+0

是否使用会话登录? – sabrams 2014-10-16 16:02:43

回答

1

如果您正在使用的会话跟踪当前登录的用户,你可以在你的应用程序控制器创建一个简单的方法是这样的:

def current_user 
    @current_user ||= User.find_by_id(session[:user_id]) 
    return @current_user 
end 

,并在你的电影的创造行动呼吁它控制器

def create 
    @movie = Movie.new(params[:movie]) 
    @user = current_user 
    user_id = @user[:id] 
    @movie[:user_id] = user_id 

    respond_to do |format| 
     if @move.save 
     format.html { redirect_to @movie, notice: 'Movie was successfully created.' } 
     format.json { render json: @movie, status: :created, location: @movie } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @movie.errors, status: :unprocessable_entity } 
     end 
    end 
    end 
+0

这是一个更好的方法,然后在这里显示的连接表方法http://railscasts.com/episodes/47-two-many-to-many? – 2014-10-16 17:25:47

+0

这使得感觉,你能指出我将只显示用户在他的个人资料页上制作的电影吗?现在,我在用户控制器中使用'@movies = Movie.all',并在我的视图中使用此代码' - @ movies.each do | movie | = movie.title' – 2014-10-16 17:49:23

+0

找到了! '@movies = @ user.movi​​es'这样就可以获得用户发布的所有电影! – 2014-10-16 17:58:33