【问题标题】:Rails show content specific to user group, adding user groupsRails 显示特定于用户组的内容,添加用户组
【发布时间】:2015-12-12 20:15:25
【问题描述】:

我目前是 Rails 新手,我正在创建一个 Rails 站点,允许用户创建项目,并且在项目内部,用户可以制作列表、提交文件等。我正在使用 devise 作为我的用户身份验证服务,我一直在寻找最有效的方式来构建这个应用程序。

我希望在用户注册时生成用户和项目。内容将显示到其特定项目。我还希望能够将其他用户添加到项目中。

我正在查看设计中的current_user,但我不确定如何在这个结构中实现。

【问题讨论】:

  • 用户和项目在注册的时候生成是什么意思?
  • 我希望在注册过程中将用户添加到用户数据库,并将项目关联到项目数据库。

标签: ruby-on-rails ruby ruby-on-rails-3 devise


【解决方案1】:

Devise 将使用自己的控制器处理用户创建、更新等,因此您只需使用正确的路由(输入 rake routes 以获取列表)。

如果我理解正确,您希望在创建用户时自动创建一个项目。您可以在User 模型中使用after_create 回调(其他回调也可以工作)。我假设您的 User 模型与项目有 has_many 关联:

class User < ActiveRecord::Base
  devise :database_authenticable, :registerable # ...etc...

  has_many :projects

  after_create do |user|
    user.projects.create(...)
  end
end

如果您希望一个项目有很多用户,而一个用户有很多项目,则您需要在模型之间建立 has_many :throughhas_and_belongs_to_many 关联。前者使用额外的模型来连接两者,并允许您将信息存储在关联中,后者不需要额外的模型但您需要创建一个连接表。

希望对您有所帮助。

【讨论】:

  • 我假设我需要对项目层次结构下的所有内容进行某种参考,以判断它是用于什么项目的?我需要一个类似的参考来说明每个项目所参考的用户?
  • 没错,您需要使用关联来建立模型之间的关系。例如,如果用户有很多项目,您可以在 User 模型中编写 has_many :projects,在 Project 模型中编写 belongs_to :user,并在您的项目表中定义 user_id 字段(整数)数据库。这是一个很好的指南:guides.rubyonrails.org/association_basics.html
猜你喜欢
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多