如何通过多态关联中的子模型搜索父模型的字段

时间:2016-12-22 09:41:05

标签: ruby-on-rails

class Book < ActiveRecord::Base
  belongs_to :owner, polymorphic: true
end

class User < Active record::Base
  has_many :books, as: :owner
end

现在这本书有三个字段 - name, owner_id and owner_type。现在我需要通过书籍搜索用户名。

像这样......

Book.includes(:user).where("user_name LIKE ?","bla")

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果你这样做:

 Book.includes(:owner)
  

无法急切加载多态关联

您将收到上述错误。

您需要定义Book和User

之间的关系
 class Book < ActiveRecord::Base
      belongs_to :owner, polymorphic: true
      belongs_to :user, foreign_key: 'owner_id', conditions: "owner_type = 'User'"
 end

请参阅here