加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 嵌套has_many:通过rails 3

发布时间:2020-12-17 03:52:09 所属栏目:百科 来源:网络整理
导读:我知道Rails不支持嵌套的has_many:通过关系,虽然早在Rails 2之前就有关于补丁的谈话和开放票. 我确实来了across a plugin,这很漂亮,但是主分支机构不能与Rails 3一起工作,我对使用它在应用程序中执行任务关键任务犹豫不决,因此缺乏活跃的近期开发.那么 –
我知道Rails不支持嵌套的has_many:通过关系,虽然早在Rails 2之前就有关于补丁的谈话和开放票.

我确实来了across a plugin,这很漂亮,但是主分支机构不能与Rails 3一起工作,我对使用它在应用程序中执行任务关键任务犹豫不决,因此缺乏活跃的近期开发.那么 – 处理这些关系的最佳方式是什么?

class Author < ActiveRecord::Base
  has_many :contracts
  has_many :products,:through => :contracts

class Product < ActiveRecord::Base
  has_many :contracts
  has_many :orders
  has_many :authors,:through => :contracts

class Contracts < ActiveRecord::Base
  belongs_to :author
  belongs_to :product

所以,通过将其添加到Author模型,能够获得订单将会很棒.

has_many :orders,:through => :products

但是,唉,你不能 – 至少没有插件.所以,我的问题是,当唯一关联是在连接模型,合同之间时,访问所有作者订单的最佳方法是什么?

解决方法

如果您没有尝试通过嵌套关联创建对象,并且您只想将它??用于查找,那么Rails 3中的范围是一种很好的方法.或者,您可以实现一个类方法.

在最近我教过的一个课程中,我已经将这种事情作为一个例子,Rails 3版本的代码在这里:
https://github.com/wolframarnold/Efficient-TDD-Rails3/blob/master/app/models/user.rb

请参阅items方法的定义.规格在这里:
https://github.com/wolframarnold/Efficient-TDD-Rails3/blob/master/spec/models/user_orders_spec.rb

Rails 3.1更新:正如一位评论者已经指出的那样,Rails 3.1确实支持has_many:通过超过一个级别的关联.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读