Rails多级关联

时间:2015-06-11 20:51:12

标签: ruby-on-rails model associations

一般来说,Ruby,Rails和OOP的新手。我已经通过" Ruby on Rails教程:使用Rails学习Web开发"大约80%通过"敏捷Web开发与Rails 4"但我无法直观地想出这一点。我希望有人可以帮助我理解,也许我说错了。

模型:用户,团队,成员,订单,OrderLine

这是一个非常基本的设置。 (简而言之,如果你愿意...) 团队belongs_to:用户(所有者,这里不是非常相关) 用户has_many:团队通过::会员资格 团队has_many:用户通过::会员资格 OrderLine belongs_to:团队 请注意,OrderLine已分配给团队,而不是整个订单。

我试图显示与当前登录用户(current_user)相关联的所有OrderLines。虽然这实际上并不奏效,但我觉得它接近生产。它也感觉非常脏。

    def index
        @memberships = current_user.memberships.ids
        membership_list = @memberships.join(", ")
        @OrderLines = OrderLine.where("team_id IN (?)", membership_list)
    end

干杯!

1 个答案:

答案 0 :(得分:0)

# Model
class User < ActiveRecord::Base
  has_many :owned_team, :class_name => "Team"
  has_many :teams
  has_many :memberships
  has_many :order_lines, through: :memberships

class Team < ActiveRecord::Base
  belongs_to :faction
  belongs_to :region
  belongs_to :owner, :class_name => "User"
  has_many :users, through: :memberships
  has_many :order_lines

class Membership < ActiveRecord::Base
  belongs_to :user
  belongs_to :team
  has_many :order_lines, through: :team

# Controller
@OrderLines = current_user.order_lines

有时你需要的只是休息。