啊,伙计们,
我是Rails的新手,我觉得我肯定错过了一些关键的东西,因为看起来这应该是一个容易解决的问题。
我已经设置了Page
模型和Coord
模型(在入门教程的帮助下),Coord
成功belongs_to
Page
。我正在尝试应用类似的逻辑来制作另一个模型Comment
,属于Coord
,并且只能通过Page
属于Coord
。
我是否将:through
用于(我认为)只需要在一个方向上链接的关联?如Page< Coord<评论?
目前我有:
class Page < ActiveRecord::Base
attr_accessible :description, :name
has_many :coords
has_many :comments, :through => :coords
end
Coord模特:
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的人,而且文档中只有远离我的例子(据我所知)。感谢
修改:添加了数据库架构
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
答案 0 :(得分: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
。