2013-03-14 83 views
0

我有兩個副本...爲什麼ActiveRecord的關聯回報每一個相關聯的對象

class Report < ActiveRecord::Base 
    has_and_belongs_to_many :elements 
end 

class Element < ActiveRecord::Base 
    has_and_belongs_to_many :reports 
end 

我看到在命令行中一些非常怪異的行爲:

$Element.all 
[#<Element id: 1, name: "fdafda", created_at: "2013-03-12 02:10:56", updated_at: "2013-03-12 02:10:56">, 
#<Element id: 2, name: "Foo", created_at: "2013-03-14 10:46:56", updated_at: "2013-03-14 10:46:56">, 
#<Element id: 3, name: "Bar", created_at: "2013-03-14 10:47:03", updated_at: "2013-03-14 10:47:03">] 

$ Report.first.elements 
[#<Element id: 2, name: "Foo", created_at: "2013-03-14 10:46:56", updated_at: "2013-03-14 10:46:56">, 
#<Element id: 2, name: "Foo", created_at: "2013-03-14 10:46:56", updated_at: "2013-03-14 10:46:56">, 
#<Element id: 3, name: "Bar", created_at: "2013-03-14 10:47:03", updated_at: "2013-03-14 10:47:03">, 
#<Element id: 3, name: "Bar", created_at: "2013-03-14 10:47:03", updated_at: "2013-03-14 10:47:03">] 

(rdb:2) Report.first.elements.uniq 
[#<Element id: 2, name: "Foo", created_at: "2013-03-14 10:46:56", updated_at: "2013-03-14 10:46:56">, 
#<Element id: 3, name: "Bar", created_at: "2013-03-14 10:47:03", updated_at: "2013-03-14 10:47:03">] 

如何複製Report.first.elements中的元素甚至有可能?我該如何阻止它?

rails -v 
Rails 3.2.11 
$ ruby -v 
ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-darwin12.2.1] 

回答

0

找到了答案。在reports/id/elements/new中有一個報表選擇器。如果用戶在報表選擇器中選擇了當前報表,則會在連接表中創建元素和報表之間的兩個鏈接。