У меня есть связь между experience
и company
где компания has_many :experiences
и опыт belongs_to :company
, сейчас я хочу создать: если пользователь вводит название компании, которые уже существуют в модели компании она присвоит но если пользователь поставил название компании, которое еще не существует в модели компании - компания должна сохраняться, но не создаваться как новая запись (я не хочу использовать метод find_or_create
, а find_by
не работает для эта ситуация)Rails 4: найти или создать метод
Редактировать
это мой контроллер компании
def allcompanies
@companies = Company.paginate(page: params[:page], per_page: 10).order("created_at DESC")
end
def show
@company = Company.find_by_slug(params[:id])
if @company
render action: :show
else
render file: 'public/404', status: 404, formats: [:html]
end
end
def index
@companies = Company.limit(19).order("id DESC")
end
def new
@company = Company.new
end
def edit
end
def create
@company = Company.new(company_params)
respond_to do |format|
if @company.save
flash[:notice] = "Entreprise '#{@company.name}' Crée!"
format.html { redirect_to @company}
else
format.html { render action: 'new' }
end
end
end
def update
respond_to do |format|
if @company.update(company_params)
flash[:notice] = "Entreprise '#{@company.name}' à été mis à jour"
format.html { redirect_to @company }
else
format.html { render action: 'edit' }
end
end
end
def destroy
@company.destroy
respond_to do |format|
format.html { redirect_to companies_url }
end
end
private
def set_company
@company = Company.find_by_slug(params[:id])
end
def company_params
params.require(:company).permit(:name, :company_description, :country, :city, :company_status, :company_size, :company_website, :sector_ids, :job_id, :companylogo)
end
и это мой опыт модель, которая на самом деле создать новую запись для каждой компании
belongs_to :profile
belongs_to :company
validates :company_name, presence: true
def company_name
company.try(:name)
end
def company_name=(name)
self.company = Company.find_or_initialize_by(name: name)
end
> Компания должна сохраняться, но не создаваться в качестве новой записи - как это? –
Я не знаю, почему я спрашиваю, а linkin уже делает это, если вы положите на свой опыт название компании, которое не существует в их db, эта компания не будет создана –
, откуда вы знаете, что это isn Создано в их db, вы проверили? Возможно, это поле имеет название 'public_visible' с' false' для этой компании. –