Ruby on rails Rails:在创建新条目时,如何遍历模型中的嵌套属性
我已经研究了如何做到这一点,我发现最好的资源是在 特别是在那一页上,它说:Ruby on rails Rails:在创建新条目时,如何遍历模型中的嵌套属性,ruby-on-rails,callback,nested-attributes,Ruby On Rails,Callback,Nested Attributes,我已经研究了如何做到这一点,我发现最好的资源是在 特别是在那一页上,它说: member = Member.create(params[:member]) member.posts.length # => 2 member.posts.first.title # => 'Kari, the awesome Ruby documentation browser!' member.posts.second.title # => 'The eg
member = Member.create(params[:member])
member.posts.length # => 2
member.posts.first.title # => 'Kari, the awesome Ruby documentation browser!'
member.posts.second.title # => 'The egalitarian assumption of the modern citizen'
我正在尝试迭代嵌套属性,并为嵌套在事件模型中的每个场景创建一个新的条目对象,但是如何使用.first和.second进行迭代。。。等等
因此,这里的总体目标是创建一个复杂的表单,当您创建一个事件时,您可以使用嵌套属性在该事件中创建多个场景。创建或更新场景或事件时,需要启动并创建一个与事件ID关联的新日志条目。除此之外,我还需要启动一个回调,以便在他们将资源分配给场景和将场景角色分配给资源时进行回调
通过数小时的研究,除了使用.first和.second之外,我还没有弄清楚如何迭代嵌套属性
以下是我的事件模型:
class Incident < ActiveRecord::Base
has_many :scenes
has_many :scene_assignments
has_many :entries
after_create :create_action
after_update :update_action
accepts_nested_attributes_for :scenes
accepts_nested_attributes_for :scene_assignments
def create_action
@entry = Entry.new(incident_id: self.id, name: "Created Incident - #{self.name}")
@entry.save
self.scenes.each do
@scene_entry = Entry.new(incident_id: self.id, name: "#{self.scenes.first.name} was created")
@scene_entry.save
end
end
def update_action
@entry = Entry.new(incident_id: self.id, name: "Updated Incident - #{self.name}")
@entry.save
end
end
如果要迭代模型的嵌套属性,只需使用普通Ruby循环:
member.posts.each do |post|
...
end
您可以使用循环中的
post
变量执行任何操作-更新、保存、销毁等。不用担心,很乐意提供帮助。
member.posts.each do |post|
...
end