Rails:根据另一个字段以编程方式保存和更新数据库中的数据

时间:2012-11-28 13:28:52

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

我正在使用Rails 3和mongoid。

我想根据另一条记录中的值保存或更新一条记录中的值。

例如:

class User
  include Mongoid::Document
  field :account_level, :type => Integer
end


class Profile
  include Mongoid::Document
  field :position, :type => Integer
end

如果User中的account_level为1,则Profile中的position也应更新为1。如果account_level is 2, then position`应为2。

这应该以编程方式完成,无需用户输入或使用客户端上的不可见输入字段(必须有更好的方法来执行此操作)。

额外的问题......我有什么以下逻辑(对于position),我该怎么做?

account_level 1 = position 1
account_level 2 = position 1
account_level 3 = position 5

1 个答案:

答案 0 :(得分:3)

不确定我是否理解你的问题。

尝试使用回调(http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html):

例如,在User类中:

before_save :set_equals_account_level_and_position
def set_equals_account_level_and_position
  profile.position = account_level
  profile.save!
end