Rails关联/会话问题



我正在为我的孩子们开发一个记录他们的家务的应用程序。我有3个孩子(尼克,锡耶纳,Mac),并有一个主页与每个名字超链接…

我有以下联想:

Child:
  has_many :completions
  has_many :chores, :through=>:completion
Completion: 
  belongs_to :child
  belongs_to :chore
Chore:
  has_many :completions
  has_many :kid, :through=>:completion
  1. 我如何(在点击孩子的名字)保存child_id作为一个会话对象发布完成到完成模型?

  2. 当另一个孩子在主页上点击他们的名字时,我如何清除/更改该会话到一个新的孩子?

非常感谢任何帮助。谢谢,CB

所以josh做得很好。作为一个新手,我想问一些对大多数人来说更简单和基本的问题。答案很简单:

ApplicationController
private
  def current_child
    child = Child.find(params[:id])
    session[:child_id] = child.id
  end
end

这允许我将孩子的id存储在会话中,并发布到完成的模型。

如果我正确理解了这个问题(至少正如你在评论中描述的那样),我最近做了类似的事情。参见从多个父对象构建嵌套属性。基本上,我使用多态url来创建一个链接来创建一个新项目(我可能会使用@child.chores.build(params))并传递属性:chore_id,即

link_to "Mark as complete", polymorphic_url([:new, @child, :completion], :chore_id => @chore.id)

在你的控制器中确保在你的chorescontroller# new中输入类似

的内容
def new
  @chore = <current_child>.chores.build(params)
end

最新更新