Rails 中的 t.belongs_to 和 t.references 有什么区别?

发布于 2024-12-10 09:47:54 字数 476 浏览 4 评论 0原文

t.referencest.belongs_to 之间有什么区别? 为什么我们有这两个不同的词?在我看来他们做同样的事情? 尝试了一些谷歌搜索,但没有找到解释。

class CreateFoos < ActiveRecord::Migration
  def change
    create_table :foos do |t|
      t.references :bar
      t.belongs_to :baz
      # The two above seems to give similar results
      t.belongs_to :fooable, :polymorphic => true
      # I have not tried polymorphic with t.references
      t.timestamps
    end
  end
end

What is the difference between t.references and t.belongs_to?
Why are we having those two different words? It seems to me they do the same thing?
Tried some Google search, but find no explanation.

class CreateFoos < ActiveRecord::Migration
  def change
    create_table :foos do |t|
      t.references :bar
      t.belongs_to :baz
      # The two above seems to give similar results
      t.belongs_to :fooable, :polymorphic => true
      # I have not tried polymorphic with t.references
      t.timestamps
    end
  end
end

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

世态炎凉 2024-12-17 09:47:54

查看源代码,他们做同样的事情—— belongs_toreference 的别名:

  def references(*args)
    options = args.extract_options!
    polymorphic = options.delete(:polymorphic)
    args.each do |col|
      column("#{col}_id", :integer, options)
      column("#{col}_type", :string, polymorphic.is_a?(Hash) ? polymorphic : options) unless polymorphic.nil?
    end
  end
  alias :belongs_to :references

这只是使代码更具可读性的一种方式 - 能够将 belongs_to 放入其中真是太好了在适当的时候进行迁移,并坚持其他类型关联的引用

Looking at the source code, they do the same exact thing -- belongs_to is an alias of reference:

  def references(*args)
    options = args.extract_options!
    polymorphic = options.delete(:polymorphic)
    args.each do |col|
      column("#{col}_id", :integer, options)
      column("#{col}_type", :string, polymorphic.is_a?(Hash) ? polymorphic : options) unless polymorphic.nil?
    end
  end
  alias :belongs_to :references

This is just a way of making your code more readable -- it's nice to be able to put belongs_to in your migrations when appropriate, and stick to references for other sorts of associations.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文