0

我有兩種不同的型號。兩種型號的Ruby on Rails關係

產品型號

class Item < ActiveRecord::Base 
    belongs_to :category 
    attr_accessible :make, :model, :name, :purchasedfrom, :qrcode, :serialnumber, :category_id 
end 

事件模型

class Event < ActiveRecord::Base 
    belongs_to :category 
    attr_accessible :name, :location_id, :category_id 
end 

我無法弄清楚如何做到以下幾點:

  • Event有多個Item可以在Event
  • 一個Event歷史仍然顯示來自特定事件的Items

  • 將顯示從活動項目:本地主機/事件/:ID /項目

我想不通這對我的生活。如果我能在這個問題上得到一些指導,我將不勝感激!在此先感謝您的幫助。

我已經看到使用:through,我相信我將不得不在這裏使用。

+0

您應該使用'has many:through'或'has_and_belongs_to_many'關係。 – samuil

回答

1

如果我正確理解你的問題,在這裏你可以在事件模型中寫這樣的東西。

class Event 
    def items 
    category.items 
    end 
end 

然後在控制器,

@event = Event.find(params[:id]) 
@items = @event.try(:items) 
+0

確保在調用'items'屬性之前檢查'category'關聯是否存在。 – matsko

0

如果一個Category可以有很多Events我想你一定在Item添加event_id才能夠知道,一直只有一個Event正是Items。 (並在那種情況下添加關係)。

或者連接表EventItem和has_and_belongs_to_many之間,如果一個Item可以在許多Events

編輯:

如果是這樣,添加表​​,關係has_and_belongs_to_many :items(在EventItem:events) ,並閱讀文件has_and_belongs_to_many

否則,如果你正在尋找Items已經上了一定Event你會發現所有Items已在所有Events具有相同Category作爲Event您正在調查。

+0

我真的很困惑。一個'Item'可以在'Event'中。一個'Item'就像在所述'Event'中使用的揚聲器或麥克風。所以我們在'Event'處有多個'Item'。 「事件」結束,項目返回到它們存儲的位置。但是,如果我查看該事件,則可以看到與「事件」分開的項目。 'Event'表具有':name,:location_id,:event_date,:category_id'。那麼如何將不同的'Events'關聯MULTIPLE'Item'? – Turp

+0

我改變了我的建議,希望能回答你的問題。 – 244an

0

我認爲你會想要做的是:

class Item < ActiveRecord::Base 
    belongs_to :event 
end 

和事件:

class Event < ActiveRecord::Base 
    has_many :items 
end 

那麼你應該能夠查看事件的項通過調用:

@event = Event.find_by_id(:id) 
@event.items.all 
+1

我真的很困惑。一個'Item'可以在'Event'中。一個'Item'就像在所述'Event'中使用的揚聲器或麥克風。所以我們在'Event'處有多個'Item'。 「事件」結束,項目返回到它們存儲的位置。但是,如果我查看該事件,則可以看到與「事件」分開的項目。 'Event'表具有':name,:location_id,:event_date,:category_id'。那麼如何將不同的'Events'關聯MULTIPLE'Item'? – Turp