我是rails的新手,实际上一直在读取范围内的连接以及如何使用has_many和through之类的关联。
我注意到我并不完全理解使用连接和has_many的区别。您似乎可以缩短查询,而不是使用连接,我可以使用has_many。
有人可以在两者之间给我一个很好的解释吗?谢谢!
答案 0 :(得分:1)
我希望你知道SQL joins。 joins
方法用于两个表的内连接,主要用于自定义查询。
例如,User.joins(:reports)
将导致以下查询:
SELECT "users".* FROM "users" INNER JOIN "reports" ON "reports"."user_id" = "users"."id"
而has_many_through
是关联提供的Rails通过第三个模型在两个模型之间建立多对多关系。
例如,从Rails docs中查看以下示例:
class Physician < ApplicationRecord
has_many :appointments
has_many :patients, through: :appointments
end
class Appointment < ApplicationRecord
belongs_to :physician
belongs_to :patient
end
class Patient < ApplicationRecord
has_many :appointments
has_many :physicians, through: :appointments
end