2015-06-11 2 views
0

Новое для Ruby, Rails и OOP в целом. Я прошел через «Ruby on Rails Tutorial: Learn Web Development with Rails» и около 80% через «Agile Web Development с Rails 4», но я не могу визуально понять это. Я надеялся, что кто-то может помочь мне понять, может быть, я это неправильно.Rails многоуровневая ассоциация

модели: Пользователь, команда, членство, Заказ, OrderLine

Это довольно простая установка. (Короткая рука, если вы ...) Team belongs_to: пользователь (владелец, не очень актуален здесь) Пользователей HAS_MANY: команды через:: ЧЛЕНСТВО Team HAS_MANY: пользователи через:: ЧЛЕНСТВО OrderLine BELONGS_TO: команда Примечания OrderLine назначается команде, а не всему Ордену.

Я пытаюсь отобразить все OrderLines, которые связаны с текущим пользователем (current_user). Хотя это на самом деле не работает, я чувствую, что это близко к производству. Он также чувствует себя супер грязным.

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

Cheers!

ответ

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 

Несколько раз все, что вам нужно, это перерыв.