0

私は正しい用語がわからないと思いますので、正しい答えを見つけるのが難しいです。2つのモデルをRails 3.xのmiddlemodelでリンクしましょう

私はExhibitとCategoryでエンジンを作成しました。私は、3つ以上のカテゴリに展示物を割り当てるために、第3のモデル分類を作成しました。これには、exhibit_idとcategory_idだけがあります。

私がしたいことは、すべてのカテゴリのページを作成することです。そのため、Newsカテゴリに展示品を割り当てて、「ニュース」ページに表示し、Photographsカテゴリで「Photographs "ページなど私はこれがルーティング設定だと思うが、私はまだそこに持っていない(しかし、それは実際にルーティングの設定である場合私に知らせてください)

私の問題は、 1台のコントローラからのみ何を持っている:

class Categorization < ActiveRecord::Base 
    belongs_to :exhibit 
    belongs_to :category 
end 

class Category < ActiveRecord::Base 
    has_many :categorizations 
    has_many :exhibits, :through => :categorizations 
    acts_as_indexed :fields => [:title] 
    validates :title, :presence => true, :uniqueness => true 
end 

class Exhibit < ActiveRecord::Base 
    has_many :categorizations 
    has_many :categories, :through => :categorizations, :source => :category 
    acts_as_indexed :fields => [:title, :bulb] 
    validates :title, :presence => true, :uniqueness => true 
    belongs_to :foto, :class_name => 'Image' 
end 

にはどうすれば:category =>"News"に属しExhibit:fotoを取得するのですか?

私はscope :news, where(['category_id="1"'])Categorizationでモデルを追加しようと、私はCategorization.newsを取得することができますが、どのように私は(私はこれがExhibit.fotoある推測)この出品物の写真とCategorization.exhibit_idを接続しますか?

はあなたのすべてをありがとう

私が開始する場所がわからない... ...

ペトロス

答えて

1

私は、コンソールでこれをしようとするだろう:

Categorization.news.first.exhibit.foto  

かどうかを確認しますこれはあなたに必要なImageオブジェクトを与えません。事はニュースがいくつかの可能な展示物を持っているということです。

+0

...まさに!どのように私は 'すべて'を取得し、 '最初の'を取得しないのですか?いずれにせよ、おかげで、上記の質問は魅力でした! – Cacofonix

+0

は、私はこの1つ試してみました:| T | 'Categorization.news.eachを行う' ' t.exhibit.foto' ' end' を...しかし、それは 'Categorization.news' – Cacofonix

+0

これは奇妙で返さ。あなたのコードを正確に複製しました。私はImageオブジェクトを取得します。 Categorization.news配列(コンソールのように)を表示するコンソール出力を見ている可能性があります。 各サイクルで、t.exhibit.fotoで何もしていないということです。あなたは 'Categorization.new.each do | t | t.exhibit.foto.url end'か何か?あなたのイメージモデルに属性があるかどうかは分かりませんが、私はURLがその一部になるはずだと思っていますが、そこにあるものを使用してください。それはあなたのImage属性を与えるはずです。 –

関連する問題