gpt4 book ai didi

ruby-on-rails - 使用主键从数据库中的第三个模型检索数据

转载 作者:搜寻专家 更新时间:2023-10-30 23:08:03 26 4
gpt4 key购买 nike

我想使用下面架构中的主键访问当前用户的相册。我有如下用户、乐队和专辑模型......

class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable

has_many :bands
end

class Band < ActiveRecord::Base
has_many :albums
has_many :users
end

class Album < ActiveRecord::Base
belongs_to :band
end

架构如下...

create_table "albums", force: true do |t|
t.string "name"
t.string "releaseDate"
t.string "artWorkUrl"
t.integer "band_id"
t.datetime "created_at"
t.datetime "updated_at"
end

create_table "bands", force: true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "user_id"
end

create_table "users", force: true do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
end

我正在尝试在相册 Controller 中使用以下方法...

def albums
@albums = current_user.bands.albums
end

抱歉,我确定这是一个菜鸟问题。我知道这应该是通过用户 --> 乐队 --> 专辑的简单主键访问,使用 user_id 和 band_id 但无法通过乐队填充当前用户专辑。非常感谢任何见解。

最佳答案

def albums
band_ids = current_user.bands.map(&:id)
@albums = Album.where(band_id: band_ids)
end

通过分离查询,您没有n+1 问题:What is SELECT N+1?

关于ruby-on-rails - 使用主键从数据库中的第三个模型检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23903660/

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