Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 模型中带有字符串id字段的多对多关系的Rails上的NameError_Mysql_Ruby On Rails_Ruby_Ruby On Rails 4_Many To Many - Fatal编程技术网

Mysql 模型中带有字符串id字段的多对多关系的Rails上的NameError

Mysql 模型中带有字符串id字段的多对多关系的Rails上的NameError,mysql,ruby-on-rails,ruby,ruby-on-rails-4,many-to-many,Mysql,Ruby On Rails,Ruby,Ruby On Rails 4,Many To Many,我正在使用Rails 4.0.0和mysql数据库 我创建了3个模型,是电影和流派之间的关系。一部电影可以有多种类型,一种类型可以出现在许多电影中,因此,这是一种多对多关系,所以我创建了另一个名为MovieCategory的模型作为中间表。唯一的区别是我使用字符串类型作为电影id(因为有时可能需要像“EAF7854”这样的id)。 以下是我的迁移: 电影: class CreateMovies < ActiveRecord::Migration def change creat

我正在使用Rails 4.0.0和mysql数据库

我创建了3个模型,是电影和流派之间的关系。一部电影可以有多种类型,一种类型可以出现在许多电影中,因此,这是一种多对多关系,所以我创建了另一个名为MovieCategory的模型作为中间表。唯一的区别是我使用字符串类型作为电影id(因为有时可能需要像“EAF7854”这样的id)。 以下是我的迁移:

电影:

class CreateMovies < ActiveRecord::Migration
  def change
    create_table :movies, {:id => false} do |t|
      t.string :id
      t.string :name
      t.integer :year
      t.timestamps
    end
    execute "ALTER TABLE movies ADD PRIMARY KEY (id);"
  end
end
class Movie < ActiveRecord::Base
    self.primary_key = 'id'
    has_many :movie_categories
    has_many :genres, through: :movie_categories
end

我不知道这里发生了什么。

属于
是一对一的关系。所以试着使用

belongs_to :movie
belongs_to :genre
而不是那些型号名称的多元化

您将收到此错误,b/c rails将
所属的
解释为指向名为
Genres
的模型,该模型尚未声明

class Movie < ActiveRecord::Base
    self.primary_key = 'id'
    has_many :movie_categories
    has_many :genres, through: :movie_categories
end
class Genre < ActiveRecord::Base
    has_many :movie_categories
    has_many :movies, through: :movie_categories
end
class MovieCategory < ActiveRecord::Base
    belongs_to :movies
    belongs_to :genres
end
NameError: uninitialized constant Movie::Genres
belongs_to :movie
belongs_to :genre