我正在为一个艺术展览网站构建rails应用程序。目前,我有4个模型,馆长,展览,艺术家和艺术品。
应用程序的工作原理如下,一个展览可以由许多策展人策划,一个展览会可以展示多件艺术品,一件艺术品可以在许多展览中展出,艺术家可以拥有许多艺术品,艺术品属于一位艺术家。
我是一个铁路新手,在建立模型之间的关系时遇到了困难。你能告诉我我做得对吗,或者有更好的方法吗?
策展人.rb
class Curator < ActiveRecord::Base
has_and_belongs_to_many :exhibitions
end
展览.rb
class Exhibition < ActiveRecord::Base
has_and_belongs_to_many :curators
has_and_belongs_to_many :artworks
end
artwork.rb
class Artwork < ActiveRecord::Base
has_and_belongs_to_many :exhibitions
belongs_to :artist
end
artist.rb
class Artist < ActiveRecord::Base
has_many :artworks
end
谢谢!
如果您想对关系进行验证、使用回调或添加额外属性,我建议您使用has_many:through。
如果你想了解更多关于这件事的信息,这个轨道指南很好:
http://guides.rubyonrails.org/association_basics.html#choosing-在-hasmany-through-and-has_and_belongs_to_many 之间
不过你的HABTM看起来不错。如果遇到任何问题,建议同时引用联接的表。
我觉得很对。创建联接表的命名约定是:
curators_exhibitions
artworks_exhibitions
希望你明白。
此外,您还想查看has_many:through,以防您想在关系之上进行验证!