2012-07-22 117 views
1

我是Ruby的新手,剛剛使用此論壇來幫助理解語言,同時編寫示例應用程序來磨練我的技能。關聯語法ruby on rails複數

我試圖建立一個有很多關係的產品&媒體。我懷疑的挑戰I「中的m是因爲複數形式介質的,但不知道如何解決它

class CreateMedia < ActiveRecord::Migration 
    def change 
    create_table :media do |t| 
     t.string :type 
     t.string :alt 
     t.boolean :is_primary 
     t.string :url_tiny 
     t.string :url_small 
     t.string :url_regular 
     t.string :url_large 
     t.string :title 

     t.timestamps 
    end 
    end 
end 

class Media < ActiveRecord::Base 
    attr_accessible :alt, :is_primary, :title, :type, :url_large, :url_regular, :url_small, :url_tiny 
    belongs_to :product 
end 

class Product < ActiveRecord::Base 
    attr_accessible :assoc_product,:product_id, :merch_associations, :aux_description, :buyable, :long_description, :name, :on_special, :part_number, :release_date, :short_description, :withdraw_date, :occasion 
    has_and_belongs_to_many :categories 
    has_many :merch_associations 
    has_many :assoc_products, :through => :merch_associations 
    has_many :media 
... 

當我運行這個(注dress_media是一個人口稠密的媒體對象數組):

products[i].media << dress_media[m] 

我得到這個錯誤控制檯:

uninitialized constant Product::Medium 

我看着在數據庫和表確實叫媒體,不是媒體因此,我認爲它應該是複數權(生成此代碼?從第電子軌道發電機)

就像我說我是新來的Rails,所以如果有人可以指出我在正確的方向創造這一對多產品&媒體,這將是偉大的?

回答

4

據我所知,你有一個名爲'媒體'的模型。請注意,如您在問題中提及的「媒體」已經是複數形式。正確的將有一個名爲「中」模式,以下關係式:

class Medium < ActiveRecord::Base 
    attr_accessible :alt, :is_primary, :title, :type, :url_large, :url_regular,:url_small, :url_tiny 
    belongs_to :product 
end 

class Product < ActiveRecord::Base 
    attr_accessible :assoc_product,:product_id, :merch_associations, :aux_description,  :buyable, :long_description, :name, :on_special, :part_number, :release_date,  :short_description, :withdraw_date, :occasion 
    has_and_belongs_to_many :categories 
    has_many :merch_associations 
    has_many :assoc_products, :through => :merch_associations 
    has_many :media 
    ... 
end 

在某個時候,你可能要設置或覆蓋Rails的singularizations和複數形式的。我不建議在特定情況下這樣做,但請注意http://blog.thefrontiergroup.com.au/2011/06/pluralizations-and-singularizations-inflections-in-rails-3/只是爲了知道如何去做。

請注意,如果您創建名爲「中」的模型,則數據庫表將被稱爲「媒體」。

+1

謝謝。也許我應該比Ruby on Rails學習英語:)重命名爲中解決了它。乾杯。 – 2012-07-22 10:49:07