【问题标题】:Linking models in Ruby on Rails在 Ruby on Rails 中链接模型
【发布时间】:2011-01-28 07:54:22
【问题描述】:

我正在构建一个 Rails 应用程序,我想连接两个模型。

有一个称为“用户”的模型来处理用户身份验证,例如用户名和密码数据。然后是一个名为“profiles”的模型,其中包含一个人的位置、描述等。

我想链接模型,以便每个用户都有一个配置文件。我真的不知道该怎么做。有人介意分享一些关于如何做到这一点的见解吗?

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

    看看rails associations basics

    你的协会看起来像

    class User < AR:Base
      has_one :profile
    end
    
    class Profile < AR:Base
      belongs_to :user
    end
    

    哦,表配置文件必须有一个带有用户外键的 user_id 列。

    【讨论】:

    • 谢谢!现在,如果您不介意另一个菜鸟问题,我如何拥有一个带有用户外键的 user_id 列?
    • 你必须创建一个迁移来告诉 rails 在表配置文件中添加一个列'user_id',然后它会处理所有事情。看看这个edgeguides.rubyonrails.org/migrations.html
    • 啊,有道理。 Rails 确实会自动处理很多事情。再次感谢。
    【解决方案2】:

    您希望在 User 模型和 Profile 模型上建立 has_one 和 belongs_to 关联。您的个人资料模型可能有一个 user_id 列,并且将是“belongs_to”关系,而用户将没有个人资料列,并且将是“has_one”关系。

    然后在你的代码中你可以这样做:

    profile = some_user.profile
    

    user = some_profile.user
    

    【讨论】:

      【解决方案3】:

      这听起来像是一对一的关联。设置方法如下:

      class User < ActiveRecord::Base
        has_one :profile
      end
      
      class Profile < ActiveRecord::Base
        belongs_to :user
      end
      

      Rails 让这种关系变得超级简单。 :)

      确保 Profiles 表有一个 user_id 列,这样这个关联才会起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-08
        • 2020-06-03
        • 1970-01-01
        • 2020-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多