【发布时间】:2016-08-15 09:40:46
【问题描述】:
我在 Rails 中有四个模型;位置、路径、特征和特征类型。但我正在努力建立一些协会。
- 要素具有一个位置和一种要素类型
- 一条路径有 2 个位置,起点和终点
从我可以运行的功能
- Feature.first.location - 并获取它适用的位置
- Feature.featuretype - 并获取与其相关的特征类型。
我可以从 Featuretype 运行
- Featuretype.first.features - 它返回使用此特征类型的所有特征。
从我可以运行的位置
- Location.first.features - 它返回链接到该位置的所有要素。
我希望能够跑步
- Location.first.paths - 并返回使用该位置的所有路径。
- Path.first.locations - 并返回路径中的两个位置。
任何帮助将不胜感激。
class Location < ActiveRecord::Base
has_many :features
end
class Path < ActiveRecord::Base
belongs_to :LocationFrom, class_name: 'Location', foreign_key: 'from'
belongs_to :LocationTo, class_name: 'Location', foreign_key: 'to'
end
class Feature < ActiveRecord::Base
belongs_to :featuretype
belongs_to :location
end
class Featuretype < ActiveRecord::Base
has_many :feature
end
如果有帮助,这是我的数据库架构
ActiveRecord::Schema.define(version: 20160813164514) do
create_table "features", force: :cascade do |t|
t.integer "featuretype_id"
t.string "featurename"
t.string "featuredescription"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "location_id"
end
create_table "featuretypes", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "locations", force: :cascade do |t|
t.string "name"
t.text "description"
t.string "latitude"
t.string "longitude"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "paths", force: :cascade do |t|
t.integer "from"
t.integer "to"
t.integer "distance"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "directed"
end
end
【问题讨论】:
标签: ruby-on-rails associations rails-activerecord