我有四种型号的导轨;位置,路径,功能和要素类型。但我正在努力建立一些协会。
从功能我可以运行
从Featuretype我可以运行
从位置我可以运行
我希望能够运行
任何帮助都将不胜感激。
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
答案 0 :(得分:1)
class Featuretype < ActiveRecord::Base
has_many :feature # Should be :features, (notice the pluralization)
end
重命名关系。命名约定是蛇案例。
class Path < ActiveRecord::Base
belongs_to :location_from, class_name: 'Location', foreign_key: 'from'
belongs_to :location_to, class_name: 'Location', foreign_key: 'to'
end
在Location
中创建一个查询Path
所需行
def paths
Path.where "from = :id OR to = :id", id: id
end
在Path
中创建一个方法,将两个位置作为数组返回
def locations
[location_from, location_to]
end