2

私は Ruby の初心者で、スキルを磨くためにサンプル アプリケーションをコーディングしながら言語を理解するためにこのフォーラムを使用しています。

製品とメディアの間に has many 関係を設定しようとしました。私が抱えている課題は、複数形のメディアが原因であると思われますが、トラブルシューティング方法がわかりません.

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 は入力された Media オブジェクト配列であることに注意してください):

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

エラーコンソールでこれを取得します:

uninitialized constant Product::Medium

DBを調べたところ、テーブルは実際にはメディアではなくメディアと呼ばれています。だから私はそれが複数形であるべきだと思いましたよね?(このコードは rails generator から生成されました)

私が言うように、私はRailsを初めて使用するので、誰かが製品とメディアの間でこれを1対多に作成する正しい方向に向けることができれば、それは素晴らしいことですか?

4

1 に答える 1

6

私が理解しているように、「メディア」と呼ばれるモデルがあります。質問で言及したように、「メディア」はすでに複数形であることに注意してください。正しいのは、「Medium」というモデルと次の関係を持つことです。

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 の単数形と複数形を設定または上書きしたい場合があります。その特定のケースでそれを行うことはお勧めしませんが、知るためにhttp://blog.thefrontiergroup.com.au/2011/06/pluralizations-and-singularizations-inflections-in-rails-3/を見てくださいどうやってするの。

「Medium」というモデルを作成すると、データベース テーブルは「Media」と呼ばれることに注意してください。

于 2012-07-22T07:20:15.357 に答える