喜欢所有权。
假设我已经有两个模型:
person name:string
dog name:string
现在我需要拥有第三张表 - 所有权。
在普通的关系数据库中,我只需要存储这些表中的两个id,但rails会自动生成它们。那么我该如何参考呢?
rails generate model Ownership XXXXXXXX
答案 0 :(得分:2)
您可以设置关系模型,如下所示:
rails generate model ownerships person:references dog:references
rails db:migrate
应用程序/模型/ ownership.rb:
class Ownership < ApplicationRecord
belongs_to :person
belongs_to :dog
end
应用程序/模型/ person.rb:
class Person < ApplicationRecord
has_many :ownerships
has_many :dogs, through: :ownerships
end
现在你可以做到:
john = Person.create(name: 'John')
doggy = Dog.create(name: 'Doggy')
john.dogs << doggy
你刚刚给约翰的所有权添加了一条狗。你可以这样找到它们:
puts john.dogs.first.name
# => "Doggy"
如果查看生成的schema.rb:
create_table "ownerships", force: :cascade do |t|
t.integer "person_id" # Here are your two ids
t.integer "dog_id" #
# ...
<小时/> 我建议你通过Rails Tutorial by Michael Hartl。在最后一节中,他通过非常详尽的解释实现了一种关系模型。
答案 1 :(得分:0)
你想要的是一个has_:through relationship或has_and_belongs_to_many关系。查看文档以获取更多信息(您可以找到有关如何设置数据库和关系的详细说明。)这是rails中的标准问题: http://guides.rubyonrails.org/association_basics.html