【问题标题】:"Finding" the "parent" object in a nested resource relationship?在嵌套资源关系中“查找”“父”对象?
【发布时间】:2009-01-15 04:07:06
【问题描述】:

假设我有两个资源,项目和任务。一个项目可以有很多任务;一个任务属于一个项目。还说我在 routes.rb 的 Project 下嵌套了 Task:

map.resources :projects do |project|
  project.resources :tasks
end

能否以编程方式发现这种关系?基本上,我需要动态加载一个任意对象,然后确定它是否有一个“父对象”,然后加载那个父对象。

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails rails-routing


    【解决方案1】:

    路由对您没有帮助,因为这只是为了反其道而行之。 您可以做的是将与 :parent: 的关系别名化

    
    class Task
      belongs_to :project
      alias :project :parent
    end
    

    然后使用这个关系来检测是否有父对象可用:

    
    if object.respond_to?(:parent)
      # do something
    end
    

    此外,如果路由设置正确,您可以使用多态路由:

    
    polymorphic_url([object.parent, object])
    

    【讨论】:

    • 这件事发生在我昨晚睡着的时候。应该是唯一的路了。谢谢!
    【解决方案2】:

    您上面的代码确定了路线的关系,并帮助生成正确的助手来创建路径等。

    您需要确保在您的madels 中正确声明了这些关系。在项目模型中你应该有:

    has_many :tasks
    

    在你的任务模型中你应该有:

    belongs_to :project
    

    一旦你设置好了,你就可以得到你想要的了。

    @task = Task.first
    
    unless @task.project.blank?
      project_name = @task.project.name
    end
    

    【讨论】:

      猜你喜欢
      • 2016-05-08
      • 1970-01-01
      • 2016-11-27
      • 2020-02-08
      • 2018-05-17
      • 2015-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多