Rails协会/会话问题

时间:2011-04-28 00:28:42

标签: ruby-on-rails model-associations

我正在为我的孩子制作一个应用程序来记录他们的家务。我有3个孩子(Nick,Siena,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. 当其他孩子在主页上点击他们的名字时,如何清除/更改该子项?

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

2 个答案:

答案 0 :(得分:1)

所以乔什超越了。作为一个菜鸟,我想要为大多数人提供更为简单和基本的东西。答案很简单:

ApplicationController

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

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

答案 1 :(得分:0)

如果我正确理解了这个问题(至少在评论中有所描述),我最近做了类似的事情。见Building a nested attribute from multiple parent objects。基本上,我使用polymorphic_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

希望这有帮助。