次のように私はCompany
モデルを持っている:マッチし、別のRailsのシリアライズされた配列
class Company < ActiveRecord::Base
has_many :employee_roles
has_many :employees
validates :company_name, uniqueness: true
serialize :contractors, Array
end
今、私は管理者がcontractors
に/会社からの追加/削除できるページがあります。次のように私はちょうどcontractors
で請負業者IDを保存contractor
を追加するには:
def assign_contractors
@company = Company.find(company_contractor_params[:company_id])
@company.contractors << company_contractor_params[:contractor_id]
@company.save
end
私は今、単一ページ上の2つの別々のリストを表示したいです。 1つのリストが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
は私がserialized
から選択された契約者のリストを取得できますかrails console
を通じてCompany.find(1).contractors
を行うことによって確認された値["2", "1"]
を持っているにもかかわらず、私の空のリストを与えていますデータ?
上で示唆したように1にn個からのクエリを減らすことになる私は鍵があると思います'[" 2 "、" 1 "]'、引用符でチェックすると、それらは文字列で、 '@ company.contractors.include? 'c.id'は整数なので、c.id'は真ではありません。 'c.id.to_s'で試してください。 – fanta
@fanta私もそれを試しましたが運がない、それでも私に空のリストが与えられます – anonn023432
'@ contractors'にそれが含まれている請負業者を確認しましたか? – fanta