0

这是我的第一个问题,我正在寻找一个类似但没有找到的问题,我开始在 Rails 上学习 ruby​​,我学习了一门课程,上面写着用 has_many 创建外键

我创建了我的班级乐队。

rails g model Band name:string website:string email:string

而且我还以与此订单生成类的方式相同的方式创建了我的类流派

class Band < ActiveRecord:Base
end

所以我像这样编辑我的文件 Band.rb

class Band < ActiveRecord:Base
    has_many :Genres
end

保存更改(Ctrl+S),当我尝试创建一个新对象 o 类 Band

a = Band.new

没有流派属性

4

3 回答 3

0

band.rb将您的文件编辑为:

class Band < ActiveRecord:Base
    has_many :genres
end

重新加载,从那时起一切都应该很好。

于 2013-10-27T12:46:26.490 回答
0

新方法不会在数据库中创建实际记录,您必须在实例上调用 save。要创建关联流派,您可以在已经存在的 Band 实例上调用 create_genre。

于 2013-10-27T14:21:02.623 回答
0

首先确保在 Your Genre 模型中你有

belongs_to :band

同样在你的乐队模型小写中,你有很多这样的关系

has_many :genres

因为一个流派属于一个乐队,你需要在你的流派表中有一个 band_id,它将指向该流派所属的乐队。

然后你可以很容易地找到乐队的流派。在你的控制器中,你可以找到一个乐队

@band = Band.find(params[:id])

并检查您之前设置的类型

@genre = @band.genres

这将为您提供该乐队的正确流派。

然而,这似乎更像是一个乐队 has_many :genres 和一个流派 has_many :bands 的情况。在这种情况下,您可能希望使用 has_and_belongs_to_many 关系。您可以在此处的 rails 指南中找到有关关联的更多详细信息: http://guides .rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association

如果您使用 has_and_belongs_to_many 关系,您需要创建一个单独的表,其中每个流派和乐队将相互指向,以便您可以轻松地将它们关联起来

于 2013-10-27T13:12:40.970 回答