皆さん、
私は Rails を初めて使用します。これは簡単に解決できる問題であるように思われるため、ここで決定的な何かが確実に欠落しているように感じます。
Page
モデルとCoord
モデルを (入門チュートリアルの助けを借りて)セットアップし、Coord
正常に完了しましたbelongs_to
Page
。Comment
同様のロジックを適用して、別のモデル をに属させ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