在rails关系数据库中创建和实施has_one关系

在查看的配置文件表上工作。 我有一个问题设置,这是正确的吗? 我对has_many和has_one关系感到困惑。 因为这是一个每个访问过的关系都有一行的表,所以我决定使用has_one。

这看起来是否正确,是否有办法在ActiveRecord中强制执行关系?

模型

class ViewedProfile < ActiveRecord::Base validates :viewed_profile_id, presence: true validates :profile_id, presence: true has_one :profile_id has_one :viewed_profile_id end 

移民

 class CreateViewedProfile < ActiveRecord::Migration def change create_table :viewed_profiles do |t| t.integer :profile_id t.integer :viewed_profile_id end end end 

编辑

此外,当我进入我的控制台并输入ViewedProfile时,没有任何内容出现。 任何想法为什么? = c架构通常应该出现!

首先,您在术语Model名称和attributes(specially Foreign keys)之间感到困惑。 Model将具有属性 ,并且关联将设置为模型

你必须像这样设置你的模型

 class ViewedProfile < ActiveRecord::Base has_one : profile end Class Profile < ActiveRecord::Base belongs_to :viewed_profile validates :viewed_profile_id, presence: true validates :viewed_profile_id, uniqueness: true end 

您的相应迁移文件应如下所示

 class CreateViewedProfile < ActiveRecord::Migration def change create_table :viewed_profiles do |t| t.string :name end end end class CreateProfile < ActiveRecord::Migration def change create_table :profiles do |t| t.integer :viewed_profile_id end end end 

我建议您在开始之前阅读这些指南文章。

协会

迁移

validation