【发布时间】:2023-03-22 04:48:01
【问题描述】:
编辑 4. 在我的解释中有些事情是不正确的...附件是一个(做得非常糟糕的图形),它显示了表和架构是如何的,然后我的主要问题是我有什么提供者通过 provider_location 表通过组位置 id 加入,组位置包含组,最终包含组名称。这就是我想知道的,建立这样的表我如何获得组名?从供应商一路走来。就像我需要一个 has_many 一样。 (大注意:图片中的提供者地址和组地址实际上是提供者位置和组位置)
编辑 x 3:谢谢@mrshoco。它让我更接近了,现在它就像我的结构不太正确的其他东西一样......运行provider_test_location.rb时出现此错误
vagrant@precise32:/vagrant/ipanmv2$ rake test test/models/provider_location_tes
t.rb
Run options: --seed 18117
# Running:
E
Finished in 0.190900s, 5.2383 runs/s, 5.2383 assertions/s.
1) Error:
ProviderLocationTest#test_fetching_a_group_name_for_a_provider:
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: provider_
locations.group_id: SELECT groups.group_name FROM "groups" INNER JOIN "provider_
locations" ON "provider_locations"."group_id" = "groups"."id" INNER JOIN "provid
ers" ON "providers"."id" = "provider_locations"."provider_id" WHERE "providers".
"first_name" = 'Shane'
test/models/provider_location_test.rb:37:in `puts'
test/models/provider_location_test.rb:37:in `puts'
test/models/provider_location_test.rb:37:in `block in <class:ProviderLocatio
nTest>'
1 runs, 1 assertions, 0 failures, 1 errors, 0 skips
这是完整的单元测试
require 'test_helper'
class ProviderLocationTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
test "adding a provider to a group location" do
group = Group.new
group.group_name = 'My Awesome'
group.save
adr = Address.new
adr.city = 'Las Cruces'
adr.state = 'New Mexico'
adr.zip = '88012'
adr.address_line_one = '382 Dark side of moon'
adr.address_line_two = ''
adr.save
gl = GroupLocation.new
gl.group = group
gl.address=adr
gl.save
prv = Provider.new
prv.first_name = 'Shane'
prv.last_name = 'Thomas'
prv.save
pl = ProviderLocation.new
pl.provider = prv
pl.group_location = gl ###############ISSUE
assert pl.save, 'Provider location did not save'
puts Group.joins(:providers).where(providers: { first_name: 'Shane' }).select('groups.group_name')
end
end
型号如下:
class Provider < ActiveRecord::Base
belongs_to :designation
belongs_to :specialty
has_many :provider_locations
has_many :invoices
has_many :groups, through: :provider_locations
end
class ProviderLocation < ActiveRecord::Base
belongs_to :provider
belongs_to :group_location
end
class Group < ActiveRecord::Base
#validations
validates :group_name, presence: true
#associations
has_many :providers, through: :provider_locations
has_many :invoices
has_one :billing
has_many :addresses, through: :group_locations
has_many :group_locations
belongs_to :billing_address, class_name: 'Address', foreign_key: 'billing_address_id'
belongs_to :mailing_address, class_name: 'Address', foreign_key: 'mailing_address_id'
has_and_belongs_to_many :insurances
has_many :provider_locations
end
class GroupLocation < ActiveRecord::Base
belongs_to :address
belongs_to :group
end
class Address < ActiveRecord::Base
has_many :group_locations
has_many :billings
end
【问题讨论】:
-
希望我理解正确。下面是我对你的问题的回答。如果仍然缺少某些内容,请提供更多信息。我真的很想在这个问题上进行合作。
标签: ruby-on-rails ruby rails-activerecord