0

我正在创建一个应用程序来跟踪用户的就业情况以及他们在公司中的位置。我需要一些帮助来尝试路由应用程序,我已经制作了usercompanydepartment.

  • user
    • company(用户 has_many :through => 就业)
      • department

用户.rb

class User < ActiveRecord::Base
    #associations
    has_many :employments
    has_many :companies, :through => :employments
    has_one :department, :through => :employments
end

就业.rb

class Employment < ActiveRecord::Base

  belongs_to :user
  belongs_to :company
  belongs_to :department
  has_many   :employment_histories
end

就业历史.rb

class EmploymentHistory < ActiveRecord::Base

  belongs_to :employment
end

公司.rb

class Company < ActiveRecord::Base

  has_many :employments
  has_many :users, :through => :employments
  has_many :departments
end

部门.rb

class Department < ActiveRecord::Base
  belongs_to :company
end
4

1 回答 1

0

对于路由,最简单的方法就是将你的资源声明为资源,然后通过对象的 id 访问它们。 http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default

然后通过关联查找,我建议您查看此 railscast:http: //railscasts.com/episodes/3-find-through-association?view=asciicast

如果通过关联进行路由和查找并不容易,您可能需要重构层次结构以在隐喻上更有意义。例如我的方法是:

  • 用户 has_many :employments 并在用户模型中给它 default_scope order: 'employments.created_at DESC' 以确保最近的工作是第一个。
  • 就业has_one:部门
  • 所属部门:公司
  • 公司 has_many :departments

然后您可以通过关联访问所有这些数据(参见上面的链接)。您只需要路由资源,然后知道如何在正确的控制器中访问它们。

于 2012-07-10T22:33:39.813 回答