【问题标题】:Understanding Rails associations了解 Rails 关联
【发布时间】:2014-12-16 13:49:47
【问题描述】:

我正在学习 Rails,我试图将 Ruby 与创建关联时发生的事情联系起来。例如:

class Post < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :posts
end

我在网上阅读了一个解释,其中将这里的 belongs_to 和 has_many 的使用与 Ruby 中的 attr_accessor 相关联。这有点令人困惑......这是怎么回事?我知道这在 Post 和 User 之间建立了 1:M 关联,​​特别是 Post 有一个包含用户 ID 的外键。在 Rails 控制台中,我可以执行以下操作:

user = User.first
user.posts 
user2 = User.create(username: 'some guy').save
post2 = Post.new(title: 'stuff', body: 'some more stuff')
user2.posts << post2 

那么这些类似于“getter”和“setter”的方法,其中每个类的对象对应于数据库中的特定行,并且由于它们的关联/关系,我可以使用这些方法吗?

【问题讨论】:

  • 您是否阅读过有关该主题的 Rails 指南:guides.rubyonrails.org/association_basics.html
  • 是的,我阅读了 rails 指南。我试图巩固我对这个主题的理解,我愿意接受另一种解释。
  • 好酷 - 只是确保你有一个共同的基础开始。
  • belongs_to :userhas_many :posts自动 为关联添加了大量方法。所以,是的,因为关联,您可以使用它们。

标签: ruby-on-rails ruby activerecord associations


【解决方案1】:

要回答您的确切问题,答案是“有点是,有点不”。

rails 在内部建立关联的工作非常复杂。是的,涉及 getter/setter 方法,是的,涉及指向表行...但这并不是 Active Record 所做的,而且不仅仅是 Active Record 所做的。

如果你真的想知道 Active Record 在里面做了什么:你可以去看看the source code on github

如果您有更具体的问题...我建议您更新您的问题以提出:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多