【问题标题】:Ruby on the rails relationsRuby on the rails 关系
【发布时间】:2012-05-24 09:15:29
【问题描述】:

我有用户和项目。用户可以有很多项目,项目可以有很多用户。现在项目有一个特定的用户作为作者或创建者,即。项目有一个创建者,该创建者也是用户。我如何在 Rails 中映射这种关系!!!

【问题讨论】:

    标签: ruby-on-rails database-design activerecord


    【解决方案1】:
    #Project
    has_and_belongs_to_many :users
    belongs_to :author, :class_name => "User"
    
    #User
    has_and_belongs_to_many :projects
    has_many :authored_projects, :class_name => "Project", :foreign_key => "author_id"
    

    您需要将author_id 添加到项目表中。

    因此您可以使用:project.authoruser.authored_projects

    【讨论】:

    • 如果我想像 project = User.last.projects.create(params[:projects]) 那样做应该怎么做,目前通过这样做,连接表中没有设置值,即。我无法通过 project = User.last.projects.create(params[:projects]) 获得 project.users
    • @roxxypoxxy,很奇怪,但它应该可以工作:guides.rubyonrails.org/… 看看 4.4.1.15。应该在 ProjectsUsers 表中创建新条目。
    • 好的,我可以做user1.projects project2 = user1.projects.new #should set the author of project2 to user1来设置author_id,我们应该怎么做@
    • project2 = user1.authored_projects.new
    【解决方案2】:

    试试这个

    class User < ActiveRecord::Base
     has_and_belongs_to_many :projects
     has_many :created_projects, :class_name => "Project", :foreign_key => "creator_id"    
    end
    
    
    
    class Project< ActiveRecord::Base
     has_and_belongs_to_many :users  
     belongs_to :creator, :class_name => "User"
    end
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    相关资源
    最近更新 更多