gpt4 book ai didi

ruby-on-rails - 匹配和分离 Rails 序列化数组

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

我有一个 Company 模型如下:

class Company < ActiveRecord::Base
has_many :employee_roles
has_many :employees
validates :company_name, uniqueness: true
serialize :contractors, Array

end

现在我有一个页面,管理员可以在其中向公司添加/删除承包商。要添加 contractor,我只需将承包商 ID 存储在 contractors 中,如下所示:

def assign_contractors
@company = Company.find(company_contractor_params[:company_id])
@company.contractors << company_contractor_params[:contractor_id]
@company.save
end

我现在想在一个页面上显示两个单独的列表。这样一个列表包含与 company 关联的所有 contractors,而另一个列表包含与该公司无关的所有 contractors

def contractor_list
@contractors = Contractor.where({ verified: true,
validated: true })
.where('membership_type != ?', Contractor.membership_types["no_membership"])
@company = Company.find(contractor_company_params[:company_id])

@selected_contractors = @contractors.select { |c| @company.contractors.include? c.id }
return render :status => 200, :json => {
:contractors => @contractors,
:selected_contractors => @selected_contractors
}
end

但它给了我一个空列表,即使我选择的公司的 contractors 具有值 ["2", "1"] 我通过 Company.find(1).contractors 通过 rails console

如何从序列化数据中获取选定承包商的列表?

最佳答案

@fanta 是对的问题是 to_s 因为它被保存为字符串。虽然我仍然不相信我写的查询,但我最终使用了以下查询:

@selected_contractors = Contractor.find(@company.contractors) 

按照 here 的建议,这会将查询从 n 减少到 1

关于ruby-on-rails - 匹配和分离 Rails 序列化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44552881/

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