Ric*_*d G 1 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
我是Ruby的新手,只是使用这个论坛帮助理解语言,同时我编写了一个示例应用程序来磨练我的技能.
我试图在Product&Media之间建立一个很多关系.我怀疑我所遇到的挑战是因为复数形式的媒介,但不确定如何解决它.
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
...
Run Code Online (Sandbox Code Playgroud)
当我运行它时(注意dress_media是一个填充的Media对象数组):
products[i].media << dress_media[m]
Run Code Online (Sandbox Code Playgroud)
我在错误控制台中得到了这个:
uninitialized constant Product::Medium
Run Code Online (Sandbox Code Playgroud)
我查看了DB,表确实称为Media,而不是中等.所以我认为应该是复数对吗?(此代码是从rails生成器生成的)
就像我说我是Rails的新手,所以如果有人能指出我正确的方向在产品和媒体之间创建这一对,那会很棒吗?
小智 5
据我所知,你有一个名为'Media'的模型.请注意,正如您在问题中提到的,"媒体"已经是复数形式.正确的是有一个名为'Medium'的模型和以下关系:
class Medium < ActiveRecord::Base
attr_accessible :alt, :is_primary, :title, :type, :url_large, :url_regular,:url_small, :url_tiny
belongs_to :product
end
Run Code Online (Sandbox Code Playgroud)
和
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
Run Code Online (Sandbox Code Playgroud)
在某些时候,您可能想要设置或覆盖Rails单一化和复数.我不建议在特定情况下这样做,但请查看http://blog.thefrontiergroup.com.au/2011/06/pluralizations-and-singularizations-inflections-in-rails-3/只是为了知道怎么做.
请注意,如果创建名为"Medium"的模型,则数据库表将被称为"Media".