Tag: 嵌套属性

rails:create Parent,如果不存在,则创建子记录

以下任何最佳做法?: 我有制造商型号has_many库存 在我的新库存表单中,我想要一个映射到Manufacturer.name的字段,以便当一个提交新的库存表单时,应用程序: 从表单中搜索具有“名称”的制造商 如果存在,则将id分配给@ inventory.manufacturer_id并保存@inventory 如果它不存在然后从表单创建带有’name’的制造商,将id分配给@ inventory.manufacturer_id并保存 validation工作在新的库存表单上 如果库存表单在“名称”以外的字段上validation失败 ‘name’字段将重新填充用户输入的内容(但除非表单通过validation,否则不会创建新的制造商)

尝试在Rails中保存嵌套属性时的ActiveRecord :: AssociationTypeMismatch

我阅读了很多关于`has_one关系和嵌套属性的页面,但是没有成功地完成这项工作。 任何帮助都会很棒。 每个用户都有_one网络。 我正在尝试以一种forms收集两个属性的信息,但ActiveRecord::AssociationTypeMismatch in UsersController#createexceptionActiveRecord::AssociationTypeMismatch in UsersController#create 传递的参数是: {“utf8″=>”✓”, “authenticity_token”=>”I54tm1ovzHEHaXbBLTT+5tqBJv2795sKg978ot3HDBc=”, “user”=>{“name”=>”Bilbo Baggins”, “email”=>”bilbo@lotr.com”, “password”=>”[FILTERED]”, “password_confirmation”=>”[FILTERED]”, “network”=>{“home_lng”=>”-87.91894912719727″, “home_lat”=>”43.03812464542969”, “center_lng”=>”-87.91894912719727″, “center_lat”=>”43.03812464542969”, “radius”=>”500”}}, “commit”=>”Sign up”} 我猜测Network的参数必须以某种方式显示为network_attributes但我不知道如何。 控制器: def create @user = User.new(params[:user]) if (@user.save) sign_in @user flash[:success] = “One ring to rule them all!” redirect_to @user else @title = “The journey begins…” render ‘new’ end end 视图: […]

强参数和json输入轨道4

我试图通过JSON字符串保存数据,其中我有嵌套的关联属性。 我不想使用attr_accessible。 我几乎得到了强参数的逻辑,但仍然有问题使它们工作。 我正在获取JSON字符串并使用它来使用它来保存数据 data = request.body.read @inputData = Person.new(JSON.parse(data)) @inputData.save! if@inputData.valid? render :status => 200, :json => “Data inserted successfully” else render :status => 404, :json => “Not Inserted ” end 我已经定义了permit strong参数方法允许这样的嵌套属性 def referral_params params.require(:person).permit(:id, user_attributes: [:id, :first_name, :last_name, :email], device_attributes: [:id, :os_type, :os_version], location_attributes: [:id, :latitude, :longitude], duration_attributes[:id, :start_time, :end_time]) end 但我不知道如何使用此regerral_params方法以及JSON输入字符串….

通过复选框Rails 4添加多个嵌套属性(可能有多个表单)

3/13更新: 我用我的模型,控制器逻辑和几个表单版本做了一个小样本项目。 我正在构建一个表单,用户可以在其中添加“任务”和“里程碑”。 (即,任务=’真空’在里程碑里面”干净的房子’)。 它基本上是一个任务/子任务类型模型,其父级为“里程碑”,子级为“任务”。 任务和里程碑都属于“项目”….因此我尝试通过嵌套表单添加任务和里程碑以及更新操作。 我想要的方法是为每个@task_template实例创建一个表单并一次更新多个表单。 我的问题是我也试图通过名为“MilestoneTemplates”和“TaskTemplates”的表动态设置“启动里程碑/任务”…. 用户启动“添加里程碑/任务”页面,根据项目类型,他们会在复选框旁边看到一系列预建任务(@task_templates)和里程碑(@milestone_templates)。 然后,用户检查他们要添加的任务或里程碑旁边的复选框。 这应该为用户创建一个具有预建@ task_template.name,@ task_template.description …等的特定任务 我甚至无法创建1.我正在使用Rails 4,我认为我已经正确设置了我的strong_params。 以下是我对此的看法: 楷模: class Task < ActiveRecord::Base belongs_to :user belongs_to :project belongs_to :milestone class Milestone < ActiveRecord::Base belongs_to :project belongs_to :user has_many :tasks, dependent: :destroy, inverse_of: :milestone accepts_nested_attributes_for :tasks, allow_destroy: true class Project < ActiveRecord::Base has_many :milestones, dependent: :destroy has_many […]

Rails:摆脱generics“X无效”validation错误

我有一个注册表单,它具有嵌套的关联/属性,无论你想要什么。 我的层次结构是这样的: class User true end class Customer :user_role, :dependent => :destroy accepts_nested_attributes_for :user, :allow_destroy => true validates_associated :user end class Employee :user_role, :dependent => :destroy accepts_nested_attributes_for :user, :allow_destroy => true validates_associated :user end 我在这些课程中也有一些validation内容。 我的问题是,如果我尝试使用空白表单创建和客户(或员工等),我会得到所有的validation错误,加上一些通用的错误,如“用户无效”和“客户无效”如果我迭代错误我得到的东西: user.login can’t be blank User is invalid customer.whatever is blah blah blah…etc customer.some_other_error etc etc 由于嵌套用户模型中至少有一个无效字段,因此会在错误列表中添加额外的“X无效”消息。 这让我的客户感到困惑,所以我想知道是否有一种快速的方法可以做到这一点,而不必自己提交错误。

在Rails应用程序中使用accepts_nested_attributes_for时,如何维护嵌套属性的顺序

这是父模型: class TypeWell :destroy accepts_nested_attributes_for :type_well_phases, :reject_if => lambda { |a| a[:phase_id].blank? }, :allow_destroy => true … end 这是嵌套模型: class TypeWellPhase < ActiveRecord::Base belongs_to :type_well belongs_to :phase end 这是阶段模型: class Phase < ActiveRecord::Base … has_many :type_well_phases … end 我通过在父模型的控制器中复制我的阶段(阶段模型)表中的所有记录来在子表(TypeWellPhases)中添加嵌套记录,如下所示: class TypeWellsController < ResourceController … def new @new_heading = "New Type Well – Computed" @type_well = […]

嵌套属性update_attributes使用insert而不是update

我有一个用户和嵌套的配置文件类,如下所示: class User < ActiveRecord::Base has_one :profile attr_accessible :profile_attributes accepts_nested_attributes_for :profile end class Profile 1 user.update_attributes(profile_attributes: {name: ‘some name’}) user.profile.id # => 2 我不明白为什么rails会抛弃旧的配置文件并创建一个新的配置文件。 运用 user.profile.update_attributes({name: ‘some name’}) 只是按预期更新当前配置文件。 但在那种情况下,我没有利用accepts_nested_attributes_for 有谁知道为什么更新会这样发生? 我不希望最终得到一个没有连接到任何用户的配置文件行数据库。

Ruby on Rails – 嵌套属性:如何从子模型访问父模型

我有几个这样的模特 class Bill < ActiveRecord::Base has_many :bill_items belongs_to :store accepts_nested_attributes_for :bill_items end class BillItem <ActiveRecord::Base belongs_to :product belongs_to :bill validate :has_enough_stock def has_enough_stock stock_available = Inventory.product_is(self.product).store_is(self.bill.store).one.quantity errors.add(:quantity, "only #{stock_available} is available") if stock_available < self.quantity end end 上面的validation显然不起作用,因为当我从bill表单中的嵌套属性中读取bill_items时,属性bill_item.bill_id或bill_item.bill在保存之前不可用。 那我该怎么做呢?

rails ActiveAdmin嵌套表单has_one accepts_attributes_for formtastic issue

我正在使用ActiveAdmin和Rails 3.1 – 有问题了解以下是否是一个错误,或者是否有某种方法正确地做到我不理解。 我试图使用具有一个关系的嵌套模型,这样我就可以创建一个页面并在一步中填写它的元数据。 – (页面has_one meta_data,accepts_nested_attributes_for meta_data) 示例1)在此示例中,当我单击新页面时,元数据部分存在,但没有输入字段 – 另外,如果我编辑记录,它会正确显示,但是字段集在第二部分中重复。如果我删除包含semantic_field_for的f.inputs(这是有意义的),那么它会完全中断并在元数据区域中不显示任何内容…… form do |f| f.inputs “Page Information” do f.input :name f.input :uri f.input :view f.input :body, :as => :text f.input :active end f.inputs “Meta Data” do f.semantic_fields_for :meta_data do |meta_form| meta_form.inputs :title, :description, :keywords, :name => “Meta Information” end end end 我理解元数据可能没有被实例化,但我不确定我应该如何在表单块中执行此操作? (或者,如果我甚至可以这样做) – […]

带有多个图像的嵌套回形针forms

我在Banana模型和Image模型之间有一对多的关联。 此外,每个香蕉和图像属于一个用户(通过单独的关联,因为图像及其香蕉可能有不同的用户)。 我想要一个嵌套的表单来创建香蕉和图像。 踢球者是我不知道要构建多少个图像(注意多个属性)。 下面表单中注释掉的位将创建适当数量的图像,但不会完成关联的用户参考。 有没有办法用fields_for来完成这个(所以关联完成)就像我试过的那样? 香蕉模型 class Banana < ActiveRecord::Base belongs_to :user validates_presence_of :user has_many :images, dependent: :destroy accepts_nested_attributes_for :images validates_associated :images end 图像模型 class Image < ActiveRecord::Base belongs_to :user validates_presence_of :user belongs_to :banana validates_presence_of :banana has_attached_file :img end 形成 true, :html => { :multipart => true } do |f| %> <!– –> CONTROLLER […]