【问题标题】:Rails 3 - Nested Routes for has_many through self-referential following/follower relationshipsRails 3 - has_many 通过自引用跟随/跟随关系的嵌套路由
【发布时间】:2013-01-11 06:57:57
【问题描述】:

我使用这个答案建立了这样的关系:Ruby on Rails has_many through self-referential following/follower relationships

所以我有以下模型:

class User < ActiveRecord::Base

  has_many :is_trustings
  has_many :trusted_users, :through => :is_trustings, :source => 'trusted'

  has_many :trusters, :class_name => 'IsTrusting', :foreign_key => 'trusted_id'
  has_many :trusting_users, :through => :trusters, :source => :user

end

&

class IsTrusting < ActiveRecord::Base
  belongs_to :user
  belongs_to :trusted, :class_name => 'User'
end

在控制台中使用时一切正常。 现在我想创建一个嵌套路由来允许客户端检索用户的关注者。

但它不像我期望的那样工作......

看,在我的 routes.rb 中我写了

resources :user do
   resources :is_trusting
   resources :trusted_users
   resources :trusting_users
end

Wich 制作这样的路线:

/users/:user_id/is_trustings(.:format)       is_trusting#index

我觉得这个没问题,因为它是中间模型

现在我想要嵌入式模型,但这是我得到的:

/users/:user_id/trusted_users(.:format)       trusted_users#index
/users/:user_id/trusting_users(.:format)      trusting_users#index

这显然不起作用,因为没有 TrustedUsersController。我不希望这条路线用于 UserController。

必须有一个内置的快捷方式,例如模型中的 :class_name => 'Users'...

有人知道吗? :)

【问题讨论】:

    标签: ruby-on-rails routes nested


    【解决方案1】:

    据我了解,您可以使用:controller

    #....
     resources :trusted_users, :controller => :users
    #..
    

    希望你要求它)

    【讨论】:

    • 嗯,顺便说一句,现在我有三条路由到同一个控制器。我的控制器如何知道其中一个正在调用:/
    • 使用action_name分隔它..或者您可以在路由期间始终使用会话变量session[:current_action]=,或解析url...多种方式...
    • 我用action_name =) 过热,但request.path.split("/").include?("trusted_users") 看起来像解决方案
    猜你喜欢
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多