如何在多态关联中声明AR插入

时间:2015-08-12 14:38:13

标签: ruby-on-rails ruby

我有这段代码:

模型/ agent.rb

class Agent < ActiveRecord::Base
  has_one :user, :as => :profile
end

模型/ default.rb

class Default < ActiveRecord::Base
  has_one :user, :as => :profile
end

模型/ user.rb

class User < ActiveRecord::Base
  belongs_to :profile, :polymorphic => true
end

example.rb

a = Agent.new
a.phone = '0000000'
a.status = 'xis'

u = User.new
u.name = 'Name'
u.email = 'email@email.com'
u.password = 'new123'
u.profile = agent
u.save!

这是编写此代码的唯一方法吗?

在多态关系中插入记录有什么更好的方法? 我只能有一个Agent.new

如何编写更新语句?

1 个答案:

答案 0 :(得分:0)

不是真的答案,但是......

如果更有需要,可以内联创作

u.profile = Agent.new phone: '0000000', status: 'xis'

更新内联属性

u.profile.update_attributes phone: '0000000'

不幸的是,对于多态关系,build_other方法并不存在,因为这是非多态关系中用于动态插入关联的首选方法。

  

自动生成的方法

在: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html