gpt4 book ai didi

mysql - ActiveRecord多关联查询

转载 作者:行者123 更新时间:2023-11-29 14:36:45 25 4
gpt4 key购买 nike

所以我有三个模型:

  • 用户
  • 用户兴趣
  • 兴趣标签

用户模型

class User < ActiveRecord::Base
has_many :user_interests
end

兴趣标签模型

class InterestTag < ActiveRecord::Base
has_many :user_interests, :dependent => :destroy

validates :name, :uniqueness => true

end

用户兴趣模型

class UserInterest < ActiveRecord::Base
belongs_to :interest_tag
belongs_to :user
end

我想在使用以下查询加载用户个人资料时使用 ActiveRecord 包含用户兴趣的名称:

@user = User.find(current_user.id, :include => [{:user_interests => :interest_tags}])

interest_tags + user_interests 的迁移

create_table :interest_tags do |t|
t.string :name, :null => false, :size => 30
t.timestamp :created_at
end

create_table :user_interests do |t|
t.integer :user_id
t.integer :interest_tag_id
end

我做错了什么?

最佳答案

您必须在 User 模型上添加 has_many :through 关联。

class User < ActiveRecord::Base
has_many :user_interests
has_many :interest_tags, :through => :user_interests
end

class UserInterest < ActiveRecord::Base
belongs_to :interest_tag
belongs_to :user
end

class InterestTag < ActiveRecord::Base
has_many :user_interests, :dependent => :destroy
validates :name, :uniqueness => true
end

现在您可以按如下方式立即加载标签:

User.find(current_user.id, :include => :interest_tags)

注意:

您可能想查看acts_as_taggable_on gem 满足您的要求。

关于mysql - ActiveRecord多关联查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com