Mysql 模型中带有字符串id字段的多对多关系的Rails上的NameError
我正在使用Rails 4.0.0和mysql数据库 我创建了3个模型,是电影和流派之间的关系。一部电影可以有多种类型,一种类型可以出现在许多电影中,因此,这是一种多对多关系,所以我创建了另一个名为MovieCategory的模型作为中间表。唯一的区别是我使用字符串类型作为电影id(因为有时可能需要像“EAF7854”这样的id)。 以下是我的迁移: 电影: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
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