【问题标题】:Many-to-Many Relationships in RailsRails 中的多对多关系
【发布时间】:2010-08-02 17:59:15
【问题描述】:

我有两个模型我想用 m-to-m 关系连接,但我希望关系有自己的一些数据,例如到期日期或计数或类似的东西......

假设我有用户、组和一些 UsersInGroups 对象,其中用户和组都具有has_many X, :through Y 关系。 UsersInGroups belongs_to 一个用户和一个组,还有一个join_date 显示用户何时加入组。

所以我可以使用 self.groups.A 从 User 获取 Group 变量,反之亦然,但是如何获取 join_date 变量?

【问题讨论】:

    标签: ruby-on-rails model has-many relationships


    【解决方案1】:

    在多对多关系中,如果一个用户可以有多个组,并且您执行 aUser.user_in_groups,它将返回一个组数组(这将是代表它们的模型类的一个实例)。您可以遍历其中的每一个并获取每个的 join_date,或者通过索引到数组中:aUser.user_in_groups[0].join_date

    如果你只是想要一个加入日期的数组或其他东西,我会研究 Ruby 的收集方法。

    迭代:

    aUser.users_in_groups.each do |group|
      group.join_date
    end
    

    【讨论】:

    • Collect 几乎就是我想要的,谢谢!还有一件事——如果我有 aUser 和 aGroup 并且我想从这两者中找到加入日期怎么办?
    • 由于 usersingroups 属于这两个模型,您可以在每个模型上调用“users_in_groups”,并获取这些对象的数组,这些对象都有一个 join_date。
    • 那么,找到约束为:user_id => aUser.id, :group_id => aGroup.id的UsersInGroups?看来它工作正常,谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    相关资源
    最近更新 更多