ruby-on-rails - Rails - 查找用户的所有项目

标签 ruby-on-rails ruby ruby-on-rails-3

<分区>

我几天前开始学习 Rails,对 Ruby 也没有太多经验。鉴于以下关系,我现在的问题是试图找到某个用户的所有项目。

用户模型

class User < ActiveRecord::Base
    has_many :projects_users
    has_many :projects, :through => :projects_users
    attr_accessible :email, :firstname, :id, :lastname, :password, :username, :password
    has_secure_password
end

项目模型

class Project < ActiveRecord::Base
    has_many :projects_users
    has_many :users, :through => :projects_users
    attr_accessible :date_created, :id, :name
end

项目_用户模型

class ProjectsUsers < ActiveRecord::Base
    belongs_to :project
    belongs_to :user
end

到目前为止我的尝试是:

@projectuserid = ProjectsUsers.find(:all, :conditions => "user_id=#{session[:user_id]}")
@projects = Project.all(@projectuserid)

但似乎 @projectuserid 本身就是一个数组,因此查询不起作用。我知道可以用一行代码来实现这个 HABTM 关系模型,但我对 Rails 的了解仍然很少。

我的另一种方法看起来像这样,但是返回了一个空白结果:

@projects = Project.find :all,
         :conditions => "id in (select distinct project_id from projects_users where user_id=#{session[:user_id]})"

最佳答案

错误可能是因为您没有遵循 Rails 的命名约定。

  • 模型的名称应为单数形式:ProjectUser 而不是 ProjectsUsers
  • 如果您不打算在 ProjectUser 模型中保存任何其他数据,最好只使用普通的 has_and_belongs_to_many 关系。换句话说:没有“连接模型”,只有一个名为 projects_users 的连接表。

所以要么你这样做:

class User < ActiveRecord::Base
    has_and_belongs_to_many :projects
end

class Project < ActiveRecord::Base
    has_and_belongs_to_many :users
end

或者你这样做:

class User < ActiveRecord::Base
    has_many :project_users
    has_many :projects, through: :project_users
end

class Project < ActiveRecord::Base
    has_many :project_users
    has_many :users, through: :project_users
end

class ProjectUser < ActiveRecord::Base
    belongs_to :user
    belongs_to :project
end

在这两种情况下,您都可以这样做:user.projectsproject.users

关于ruby-on-rails - Rails - 查找用户的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13097993/

相关文章:

ruby-on-rails - 在其他人之后运行 Rails Controller before_action 回调

ruby-on-rails - Ruby on Rails 应用程序的分离

ruby-on-rails - 用于 Lazy HighCharts 的 Rails ActiveRecord group_by & sum db 结果

ruby-on-rails - WebMock.disable_net_connect!不工作

ruby - Ruby 中的内部函数

ruby-on-rails - @users.each 做|用户| --- 有没有办法对多个对象执行此操作

ruby-on-rails - 如何使子模型的字段在祖 parent 模型的范围内是唯一的?

ruby-on-rails - 搜索给定不同货币价格范围的型号

ruby-on-rails - Jobs with Resque gives "Don' t know how to build task 'jobs:work' "on Heroku

ruby-on-rails - Rails - 请求被视为 HTML 而不是 json