gpt4 book ai didi

ruby-on-rails - rails 4 many to many through join model, undefined method 'name' for :NilClass, sqlite3

转载 作者:行者123 更新时间:2023-12-03 18:49:59 26 4
gpt4 key购买 nike

嘿伙计们,我通过 WatchList 在用户电影之间设置了一个非常简单的多对多设置。这是一个在 iTunes api 中搜索电影的应用程序,在这里我添加了用户将搜索到的电影保存到个人列表的功能。我正在使用 Rails 4.1.1 和 sqlite3。

class User < ActiveRecord::Base

has_secure_password

validates :email, presence: true, uniqueness: true
validates :name, presence: true
validates :password, length: { minimum: 6 }, allow_nil: true

has_many :watch_lists
has_many :movies, through: :watch_lists

def add_movie(movie)
self.movies << movie
end

class Movie < ActiveRecord::Base
has_many :watch_lists
has_many :users, through: :watch_lists
end

class WatchList < ActiveRecord::Base
belongs_to :user
belongs_to :movie
end

我的问题是当我尝试添加使用itunes id作为数据库的电影时:id。在第 7 行的 saves_controller 中,它为 nil:NilClass 抛出未定义的方法“名称”。我想不通,没有什么是零?电影保存到数据库很好,有正确的信息。这是我尝试创建连接表的时候。什么是rails试图调用'name'???

第 7 行引发错误 current_user.movi​​es << @movie => undefined method 'name for nil:NilClass
class SavesController < ApplicationController
def create
temp_movie = aquire_movie
@movie = Movie.new(temp_movie.local_db_movie_info_hash)

if @movie.save
current_user.movies << @movie #### => LINE 7 ERROR undefined methond 'name for nil:NilClass
redirect_to @movie
end
end

private

def aquire_movie
movie_data = itunes_results[:results][0]
TemporaryMovie.new(movie_data)
end

def itunes_results
data_retriever.get_data(params[:movie_id], search_by_id: true)
end

结尾

这里也是架构。
    ActiveRecord::Schema.define(version: 20150330012300) do

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

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

add_index "users", ["auth_token"], name: "index_users_on_auth_token"
add_index "users", ["email"], name: "index_users_on_email"

create_table "watch_lists", force: true do |t|
t.integer "movie_id"
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
end
end

更新

我刚让一个 friend 克隆了这个 repo,他没有任何问题,所以这是某种 gem/database 问题?

最佳答案

所以我通过这个找到了答案。 NoMethodError in CartsController#destroy - Agile Web Development with Rails 4

基本上更新了 rails 4.1.1 => 4.1.2,并且错误消失了。我相信事件记录中的某种错误是它归结为的原因。

当我运行 rspec 时,我也“收到警告:循环参数引用 - 反射”。这导致我到上面的帖子。

关于ruby-on-rails - rails 4 many to many through join model, undefined method 'name' for :NilClass, sqlite3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29358118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com