【问题标题】:How do I specify a table with 2 foreign keys in rails?如何在rails中指定一个带有2个外键的表?
【发布时间】:2012-10-18 09:50:25
【问题描述】:

如果我有一个旧数据库,其中 2 个实体之间的关系在不同的表中定义。如何在 Rails 中创建这种关系?

我要介绍的基本关系是:

---管理员:

First_name
Last_name
id

---网站:

id
subject

---Admin_Sites

 id
 teacher_id
 class_id

我知道在rails中我只会使用belongs_to:和has_many:但是如果我有一个(不断更新的)teach_class表,我需要以某种方式指定rails需要查找谁与哪个类相关的关系.我不知道如何指定这一点。是否可以在类模型中以某种方式将 :foreign_key 指定为“teach_class.teacher_id”?

【问题讨论】:

  • 在 Ruby 中调用任何东西 ClassesClass 是非常规的。不要这样做!
  • 这只是为了说明 - 我的实际课程是网站和管理员,无论出于何种原因,我认为向老师/班级解释会更快
  • 请不要使用虚假值,因为它们可能会造成混淆或误导。有时两者兼而有之。
  • 我根本没有使用任何值 - 这些是标签。

标签: ruby-on-rails ruby-on-rails-3.1


【解决方案1】:

请参阅此博客以了解 has_many :through 关系 - http://ruby-on-rails-dipak-panchal.blogspot.in/2012/10/has-many-through-relationship.html

class Admin < ActiveRecord::Base
  has_many :admin_sites
  has_many :sites, :through => :admin_sites
end

class Site < ActiveRecord::Base
  has_many :admin_sites
  has_many :admins, :through => :admin_sites
end

class AdminSites < ActiveRecord::Base
  belongs_to :admin
  belongs_to :site
end

【讨论】:

  • 哦,这就是我应该意识到的。谢谢
【解决方案2】:

在教师模型中,您将拥有

has_many :teach_classes
has_many :classes, :through => :teach_classes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多