我想在用户和 CriminalRecord 之间创建一个简单的belongs_to关联。用户只有一条记录,一条记录属于用户。到目前为止,我在相应的文件中有以下内容。
模型> user.rb
class User < ActiveRecord::Base
end
模型&gt; criminal_record.rb
class CriminalRecord < ActiveRecord::Base
belongs_to :user
end
db&gt;迁移&gt; 20150902003211_create_criminal_records
class CreateCriminalRecords < ActiveRecord::Migration
def change
create_table :criminal_records do |t|
t.belongs_to :user, index: true
t.murderer :boolean
t.thief :boolean
t.timestamps null: false
end
end
end
我可以为User创建一条记录,并为CriminalRecord创建一条记录。但是,即使我在犯罪记录实例中将user_id设置为用户的id,我也无法完成类似的操作。
User.last.criminal_records
或者就此而言,我无法做以下任何事情
john = User.last
john.criminal_record.create(murderer:false, thief: true)
# or
record = CriminalRecord.create(murderer:false, thief: true)
john << record
我得到NoMethodError
答案 0 :(得分:3)
在has_one
模型中定义User
关联:
class User < ActiveRecord::Base
has_one :criminal_record
end
而且,如果您的belongs_to :user
表中的CriminalRecord
模型和user_id
列中已有criminal_records
,那么您已经完成了设置。
然后你就可以做到:
john = User.last
john.criminal_record
这是Active Record Association的一个非常简单的用例。我强烈建议您阅读Official Documentation for Active Record Association以了解可用的关联类型,并按照正确的惯例在Rails应用程序中使用它们。