我無法從軌道轉換belongs_to的關係與包括 3格式到Rails 4.轉換belongs_to的與包括從導軌3到導軌4
# Rails 3, this works fine.
class Mobileownerdisclosure < ActiveRecord::Base
belongs_to :mobileuser, foreign_key: 'mobileowner_id', conditions: "mobileownerdisclosures.mobileowner_type = 'Mobileuser'", include: :mobileownerdisclosures
end
# Rails 4 format that I can not get to work...
class Mobileownerdisclosure < ActiveRecord::Base
belongs_to :mobileuser, -> { where("mobileownerdisclosures.mobileowner_type = 'Mobileuser'").includes(:mobileownerdisclosures) }, foreign_key: 'mobileowner_id'
end
的.includes(:mobileownerdisclosures )似乎根本不被考慮。但是,如果我將其從包括更改爲加入,它工作正常。
# Rails 4 format with joins instead of includes.
class Mobileownerdisclosure < ActiveRecord::Base
belongs_to :mobileuser, -> { where("mobileownerdisclosures.mobileowner_type = 'Mobileuser'").joins(:mobileownerdisclosures) }, foreign_key: 'mobileowner_id'
end
但自從我從Rails 3的一個非常大的項目轉換爲軌道4,我寧願把它包括像原意,只是要確定原來的編碼器並不需要這種方式。
爲什麼包括不被考慮?除了我在那裏做什麼之外,還有其他的使用方法嗎?
在此先感謝。
檢查此[文檔】(http://apidock.com/rails/ActiveRecord/QueryMethods/references)進行。我認爲你需要添加.references(:mobileownerdisclosures)來讓rails在sql中的where語句中使用joined/eager loaded表。 通過一個連接,你不需要告訴activerecord你在where子句中引用了包含的表/關係。 – user3366016