bez*_*oon 1 activerecord ruby-on-rails ruby-on-rails-4
在查看的配置文件的桌子上工作.我有一个问题设置,这是正确的吗?我对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
Run Code Online (Sandbox Code Playgroud)
class CreateViewedProfile < ActiveRecord::Migration
def change
create_table :viewed_profiles do |t|
t.integer :profile_id
t.integer :viewed_profile_id
end
end
end
Run Code Online (Sandbox Code Playgroud)
此外,当我进入我的控制台并输入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
Run Code Online (Sandbox Code Playgroud)
您的相应迁移文件应如下所示
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
Run Code Online (Sandbox Code Playgroud)
我建议您在开始之前阅读这些指南文章.