0

皆さん、

私は Rails を初めて使用します。これは簡単に解決できる問題であるように思われるため、ここで決定的な何かが確実に欠落しているように感じます。

PageモデルとCoordモデルを (入門チュートリアルの助けを借りて)セットアップし、Coord正常に完了しましたbelongs_to PageComment同様のロジックを適用して、別のモデル をに属させCoord、 にのみ属さPageせようとしていますCoord

:through一方向にのみリンクする必要がある (と思う) 関連付けに使用しますか? Page < Coord < Comment? のように? 現時点で私は持っています:

class Page < ActiveRecord::Base
  attr_accessible :description, :name
  has_many :coords
  has_many :comments, :through => :coords
end

座標モデル:

class Coord < ActiveRecord::Base
  belongs_to :page
  has_many :comments
  attr_accessible :coordinates, :x, :y
  validates :x, :presence => true
  validates :y, :presence => true
end

次に、コメント モデル:

class Comment < ActiveRecord::Base
  belongs_to :coord
  belongs_to :page
  attr_accessible :body
end

comments未定義のメソッドである、または関連付けが定義されていないというエラーが引き続き発生します。これが一般的な質問である場合はお詫びします。私は Rails を知っている人を個人的に知りません。ドキュメントには、私の知る限りではあまりにもかけ離れた例しかありません。ありがとう

編集:DBスキーマを追加

ActiveRecord::Schema.define(:version => 20120712170243) do

  create_table "comments", :force => true do |t|
    t.text     "body"
    t.integer  "coord_id"
    t.integer  "page_id"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end

  add_index "comments", ["coord_id"], :name => "index_comments_on_coord_id"
  add_index "comments", ["page_id"], :name => "index_comments_on_page_id"

  create_table "coords", :force => true do |t|
    t.string   "coordinates"
    t.integer  "x"
    t.integer  "y"
    t.integer  "page_id"
    t.datetime "created_at",  :null => false
    t.datetime "updated_at",  :null => false
  end

  add_index "coords", ["page_id"], :name => "index_coords_on_page_id"

  create_table "pages", :force => true do |t|
    t.string   "name"
    t.string   "description"
    t.datetime "created_at",  :null => false
    t.datetime "updated_at",  :null => false
  end

end
4

1 に答える 1

1

ページ

class Page < ActiveRecord::Base
  has_many :coords
  has_many :comments, :through => :coords
end

座標

class Coord < ActiveRecord::Base
  belongs_to :page
  has_many :comments
end

コメント

class Comment < ActiveRecord::Base
  belongs_to :coord
  has_one :page, :through => :coord
end

page_id上記を使用すると、comments表には必要ありません。

参照: アクティブなレコードの関連付けに関するガイド

于 2012-07-12T19:17:52.187 に答える