为什么“新”方法会保存我的关系而不是仅仅初始化它

时间:2012-04-18 14:04:02

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

我有一个与Profile模型具有has_one关系的Advisor模型,在我的控制器中我有一个包含以下代码的个人资料页面:

@advisor = Advisor.includes(:profile).find(current_advisor_user.id)
@advisor.profile ||= AdvisorProfile.new

当我加载该个人资料页面时 - 它会在数据库中为个人资料创建一个记录,但是我只是想初始化它所以它在我的表单中不是零。

2 个答案:

答案 0 :(得分:5)

我想你想要@advisor.build_profile

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_one

  

association =(associate) - 分配关联对象,提取   主键,将其设置为外键,保存关联   对象

     

build_association(attributes = {}) - 返回的新对象   已使用属性实例化并链接的关联类型   通过外键但尚未保存来对象。

答案 1 :(得分:2)

试试这个,

@advisor.build_profile

它将返回“已使用属性实例化并通过外键链接到此对象但尚未保存的关联类型的新对象”。请参阅this