Rails:Select 来自多个模型

Rails: Select from multiple models

在我的 rails 应用程序中,我有一个工作模型

belongs_to :company
belongs_to :organization

我想在同一字段中下拉所有公司名称和组织名称的名单,所以我想知道这是否可能实际上我只是在添加组织之前使用公司名称,我在我的工作表中有此代码

<%= f.text_field :company_name, data: {autocomplete_source: Company.order(:name).map(&:name) },required: true %>    

这是我的工作模式

def company_name
  company.try(:name)
end

def company_name=(name)
   self.company = Company.where(name: name).first_or_create
end

我不太明白公司和组织之间的区别。我假设 Company 和 Organization 彼此没有关系。所以你可以合并这两个集合。

<% companies_and_organizations = (Company.all.pluck(:name) + Organization.all.pluck(:name)).sort %>
<%= f.text_field :company_name, data: {autocomplete_source: companies_and_organizations}, required: true %>

那么我假设您只分配一个或另一个字段。在这种情况下,如果所选名称与现有公司或组织不匹配,则创建公司:

def company_name
  (company || organization).try(:name)
end

def company_name=(name)
   company_or_organization = Organization.where(name: name).first
   company_or_organization ||= Company.where(name: name).first_or_create
   self.company = company_or_organization
end