rails中实现自关联

简介:
例:要求存储多个城市各自的坐标和两两之间的距离。
 
可以这样实现:
class CreateCities < ActiveRecord::Migration
  def self.up
    create_table :cities do |t|
      t.string :city_name
      t.decimal :x_axis, :precision=>8, :scale=>2
      t.decimal :y_axis, :precision=>8, :scale=>2
      t.timestamps
    end
  end
  def self.down
    drop_table :cities
  end
end

 
class CreateDistances < ActiveRecord::Migration
  def self.up
    create_table :distances do |t|
      t.integer :start_id
      t.integer :end_id
      t.decimal :distance, :precision=>8, :scale=>2
      t.timestamps
    end
  end
  def self.down
    drop_table :distances
  end
end
 
 
-------
class City < ActiveRecord::Base
  has_many :distances_as_start, :foreign_key=>"start_id", :class_name=>'Distance'
  has_many :distances_as_end, :foreign_key => "end_id", :class_name=>"Distance"
  has_many :starts, :through=>:distances_as_end
  has_many :ends, :through=>:distances_as_start
end

 
 
class Distance < ActiveRecord::Base
  belongs_to :start,:class_name=>"City", :foreign_key=>"start_id"
  belongs_to :end,:class_name=>"City", :foreign_key=>"end_id"
end




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/162753,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
SQL 安全 数据库
Ruby on Rails 数据库迁移操作深度解析
【7月更文挑战第19天】Rails 的数据库迁移功能是一个强大的工具,它帮助开发者以版本控制的方式管理数据库结构的变更。通过遵循最佳实践,并合理利用 Rails 提供的迁移命令和方法,我们可以更加高效、安全地管理数据库结构,确保应用的稳定性和可扩展性。
新版本 Laravel Eloquent 关联模型 使用技巧
新版本 Laravel Eloquent 关联模型 使用技巧
131 0
Laravel Eloquent 关联模型 进阶使用技巧
Laravel Eloquent 关联模型 进阶使用技巧
149 0
|
JavaScript 数据库 Ruby
【Ruby on Rails全栈课程】4.2 评论功能实现(一)--数据表的创建
1、详情页面功能描述 (1)点击帖子标题/帖子内容,进入帖子详情页面,评论框在详情页面最下面。 (2)点击详情页面的评论按钮,页面定位到评论框。(通过锚点定位) (3)点击每个评论下面的回复按钮,在该评论下面出现回复评论框,回复变成取消回复,点击取消回复,收起评论框。用js控制。 (4)如果评论被删除,评论内容展示为「该评论已删除」,该评论回复按钮隐藏,该评论下面的回复可以正常显示和回复 (5)每个评论回复的条数最多显示两条,多于两条,回复下面会显示「点击查看更多回复」
168 0