在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
- 在gem中转换ActiveRecord的扩展名
- 检查ActiveRecord是否返回结果
- 如何建立一对多的关系?
- ActiveRecord :: StatementInvalid:ArgumentError:负字符串大小(或大小太大):SELECT * FROM
- 为什么我的范围被缓存?
- Ruby / Rails – 我可以使用连接表的范围(或类方法)作为WHERE子句的一部分吗?
- link_to与inheritance的Active Record类发生问题
- Heroku + Rails错误ActiveRecord :: StatementInvalid
- Rails ActiveRecord:当记录进入特定状态时锁定属性