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

Ruby on rails Rails:根据另一个字段以编程方式保存和更新数据库中的数据,ruby-on-rails,ruby-on-rails-3,mongoid,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 如果用户中的帐户级别为1,则配置文件中的位置也应

我正在使用Rails 3和mongoid

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

例如:

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


class Profile
  include Mongoid::Document
  field :position, :type => Integer
end
如果用户中的
帐户级别
为1,则配置文件中的
位置
也应更新为1。如果
account\u级别为2,则
position`应为2

这应该以编程方式完成,不需要用户输入,也不需要在客户端使用不可见的输入字段(必须有更好的方法来完成)

额外的问题…我有以下逻辑(对于
位置
),我将如何做

account\u级别
1=
position
1
account\u级别
2=
position
1

account\u level
3=
position
5

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

尝试回调():

例如,在用户类中:

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

不知道我是否理解你的问题

尝试回调():

例如,在用户类中:

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

看来你明白了。如果profile.position与account_级别不是1:1的关系呢。是否有一种方法可以根据问题的某种逻辑(这是“额外问题”)保存不同的值。如果不是1:1关系,是什么关系?你所说的逻辑类型是什么意思?例如,如果我想将值为1和2的
帐户级别
转换为值为1的
职位
,或者将值为3的
帐户级别
转换为值为5的
职位
,看起来你确实理解了。如果profile.position与account_级别不是1:1的关系呢。是否有一种方法可以根据问题的某种逻辑(这是“额外问题”)保存不同的值。如果不是1:1关系,是什么关系?你所说的逻辑类型是什么意思?例如,如果我想将值为1和2的
帐户级别
转换为值为1的
职位
,或者将值为3的
帐户级别
转换为值为5的
职位