允许Active Record Model使用String分配关联

时间:2010-11-09 02:14:06

标签: ruby-on-rails

我有一套相当基本的模型,其中“项目”有一个“所有者”。我想允许用户在创建新项目时输入所有者的名字。如果所有者不存在,则应创建新的所有者。这样做有好办法吗?我一直在考虑使用attr_accessorbefore_validation,但它似乎会与这种关系发生冲突。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:1)

使用与您的关系名称不同的内容...... owner_name应该没问题。然后编写必要的before_validation方法。

答案 1 :(得分:1)

我会在你的控制器中使用这些内容:

def update
  Project.transaction do
    @project.owner = Owner.find_or_create_by_name(params[:project].delete(:owner_name))
    @project.attributes = params[:project]
    @project.save!
  end
end