【问题标题】:Ruby on Rails multiple many to many relations between two modelsRuby on Rails 两个模型之间的多对多关系
【发布时间】:2012-06-02 17:47:46
【问题描述】:

我有两个关系 m:n 类型,将表 Users 与表 Videos 链接起来。我通过这些行命令创建它:

rails generate migration users_comments_videos
rails generate migration users_views_videos

在文件 user.rb 和 videos.rb 中我分别添加了说明:

has_and_belongs_to_many :users
has_and_belongs_to_many :videos

这两个指令对我创建的两个关系都有效吗?

【问题讨论】:

  • has_and_belongs_to_many 而不是had_and_belongs_to_many 是的,两者都有效。
  • Ciao Giacomo,sei nuovo con Rails? fa comodo sapere che c'è una persona in più nella comunità Rails italiana ;-) 无论如何,有什么问题?您只是想知道您是否编写了正确的代码?
  • Ciao,si con Rails sono nuovo,ma più lo sto studiando più mi sta piacendo...对于英语问题...是的,我想知道这个...

标签: ruby-on-rails ruby database migration


【解决方案1】:

选择不同的关联名称,然后指定模型。

用户.rb

class User
  has_many :comments
  has_many :views
  has_many :comment_videos, :through => :comments, :source => 'Video'
  has_many :view_videos, :through => :views, :source => 'Video'
end

video.rb

class Video
  has_many :comments
  has_many :views
  has_many :comment_users, :through => :comments, :source => 'User'
  has_many :view_users, :through => :views, :source => 'User'
end

【讨论】:

  • cmets 和视图不是表或实体,而是关系。在 e/r 模型的映射中,关系 m:n 类型为 cmets,关系视图变为表。例如 cmets 的迁移文件是此类 UsersCommentsVideos false do |t| t.column :user_id, :integer t.column :video_id, :integer t.column :text, :string t.column :datecreationtext, :datetime t.timestamps end ....
  • 我已经编辑了答案,展示了如何在两个模型之间建立多个多对多关系。
  • @Anil:你如何为这些连接生成迁移。此外,如何将值插入它们。谢谢
猜你喜欢
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多