无法在Rails的Devise Model中添加多对多关系

时间:2019-01-31 16:32:12

标签: ruby-on-rails devise

我的应用程序中有许多可以正常运行的多对多关系,但是我很难添加这个新关系(user_airportshome_airports)!

我正在尝试给User一个home_airports数组,其中一个User有很多home_airports,而一个Airport有很多{{1} }(从概念上讲,机场“属于”许多用户,但在技术上当然是Users)。我创建并迁移了联接表,并将所有相关的宏添加到模型中。这是代码:

has_many

class User < ApplicationRecord devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable devise :omniauthable, omniauth_providers: %i[facebook] has_many :vacations has_many :user_airports, dependent: :destroy has_many :home_airports, through: :user_airports, source: :airport end class UserAirport < ApplicationRecord belongs_to :user belongs_to :airport end class Airport < ApplicationRecord has_many :deal_origins has_many :origin_deals, through: :deal_origins, source: :deal has_many :deal_destinations has_many :destination_deals, through: :deal_destinations, source: :deal has_many :user_airports has_many :users, through: :user_airports end # from my schema.rb create_table "user_airports", force: :cascade do |t| t.integer "user_id" t.integer "airport_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false end 中的vacations关系可以很好地工作(仅作为工作示例)。

User中的users关系实际上也可以正常工作。但是它不是相反的:对于Airports,当我调用User或更重要的是user.user_airports时,我得到一个user.home_airports

NoMethodError

我在上方显示了user.home_airports << Airport.first NoMethodError: undefined method `home_airports' for #<User:0x00007fa7bfc9f630> 中的deal_originsdeal_destinations关系,因为它们是有效的多对多关系,并且似乎与{ {1}}关系。 (我没有显示我的Airport模型,但是如果有帮助的话我可以)

我能想象到的唯一不同是UserDeal模型。

这是怎么了?

编辑: 为了响应注释中的建议,我停止了服务器,退出了控制台,重新启动了服务器,然后重新启动了控制台。仍然遇到相同的问题:

User

如果您想查看其他代码,请告诉我,并告诉我您需要什么。谢谢!

0 个答案:

没有答案