【问题标题】:Adding active User_id to a title将活动 User_id 添加到标题
【发布时间】:2023-04-03 15:24:01
【问题描述】:

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

我已经做了一些事情,但是当我创建一个新标题(作为登录用户)然后在 Rails 控制台中检查该电影是否有 User_id 时,它显示为“nil”。所以看起来我做错了什么或忘记做某事。

这是我的架构,我已经有一个 Movie 模型,所以我使用 rails g migration addUserIdToMovies user_id:integer 将 User_id 添加到 Movies 模型

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 添加到 User 和 Movie 模型中

用户模型

class User < ActiveRecord::Base

  has_many :movies

电影模型

class Movie < ActiveRecord::Base

    belongs_to :users

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

【问题讨论】:

  • 您的登录是否使用会话?

标签: ruby-on-rails activerecord


【解决方案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

【讨论】:

  • 这是不是比此处显示的连接表方法更好的方法railscasts.com/episodes/47-two-many-to-many
  • 这很有道理,你能指出我如何只显示用户在他的个人资料页面上制作的电影吗?现在我在用户控制器中使用@movies = Movie.all,在我看来此代码- @movies.each do |movie| = movie.title
  • 找到了! @movies = @user.movies 获取用户发布的所有电影!
猜你喜欢
  • 2021-12-03
  • 2018-06-02
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
相关资源
最近更新 更多